if (!exports) {
    var exports = {}
} (function (a, b) {
    a.encode = function (c) {
        this.char2unicode_table = c;
        this.unicode2char_table = b
    };
    a.encode.prototype = {
        getUnicode: function (c) {
            return this.binarySearch(c, this.char2unicode_table)
        },
        getCodepoint: function (c) {
            if (!this.unicode2char_table) {
                this.buildUnicodeTable()
            }
            return this.binarySearch(c, this.unicode2char_table)
        },
        binarySearch: function (h, g) {
            var f = 0;
            var c = g.length - 1;
            var e = null;
            while (f <= c) {
                var d = Math.floor((f + c) / 2);
                if (h < g[d][0]) {
                    c = d - 1
                } else {
                    if (h > g[d][0]) {
                        f = d + 1
                    } else {
                        e = d;
                        break
                    }
                }
            }
            if (e === null && c >= 0) {
                e = h < g[c][0] ? f : c
            }
            if (e != null) {
                var i = g[e];
                if (i.length == 2) {
                    return i[0] == h ? i[1] : null
                } else {
                    if (h >= i[0] && h <= i[1]) {
                        return i[2] + (h - i[0])
                    }
                }
            }
            return null
        },
        buildUnicodeTable: function () {
            var e = [];
            var f = this.char2unicode_table;
            var c = f.length;
            for (var d = 0; d < c; d++) {
                var g = f[d];
                if (g.length == 2) {
                    e.push([g[1], g[0]])
                } else {
                    e.push([g[2], g[2] + (g[1] - g[0]), g[0]])
                }
            }
            e.sort(function (i, h) {
                return i[0] - h[0]
            });
            this.unicode2char_table = e
        }
    };
    a.encode.gb2312 = {
        _encoding: b,
        getEncoding: function () {
            if (typeof this._encoding == "undefined") {
                this._encoding = new a.encode(this.table)
            }
            return this._encoding
        },
        encode: function (j) {
            var h = function (c) {
                return "%" + (c > 15 ? "" : "0") + c.toString(16).toUpperCase()
            };
            var g = [];
            var d = j.length;
            for (var e = 0; e < d; e++) {
                var k = j.charCodeAt(e);
                if (k > 128) {
                    var f = this.getEncoding().getCodepoint(k);
                    if (f) {
                        g.push(h((f >> 8) + 128));
                        g.push(h((f & 255) + 128))
                    }
                } else {
                    g.push(encodeURI(j.charAt(e)))
                }
            }
            return g.join("")
        },
        decode: function (c) {
            if (typeof c != "string") {
                return ""
            }
            var h = [];
            var i = unescape(c);
            var f = i.length;
            var j = 0;
            while (j < f) {
                var e = i.charCodeAt(j);
                if (e >= 128) {
                    j++;
                    var d = i.charCodeAt(j);
                    var k = ((e - 128) << 8) + (d - 128);
                    var g = this.getEncoding().getUnicode(k);
                    if (g) {
                        h.push(String.fromCharCode(g))
                    } else {
                        h.push("?")
                    }
                } else {
                    h.push(i.charAt(j))
                }
                j++
            }
            return h.join("")
        },
        table: [
            [8481, 8483, 12288],
            [8484, 12539],
            [8485, 713],
            [8486, 711],
            [8487, 168],
            [8488, 12291],
            [8489, 12293],
            [8490, 8213],
            [8491, 65374],
            [8492, 8214],
            [8493, 8230],
            [8494, 8495, 8216],
            [8496, 8497, 8220],
            [8498, 8499, 12308],
            [8500, 8507, 12296],
            [8508, 8509, 12310],
            [8510, 8511, 12304],
            [8512, 177],
            [8513, 215],
            [8514, 247],
            [8515, 8758],
            [8516, 8517, 8743],
            [8518, 8721],
            [8519, 8719],
            [8520, 8746],
            [8521, 8745],
            [8522, 8712],
            [8523, 8759],
            [8524, 8730],
            [8525, 8869],
            [8526, 8741],
            [8527, 8736],
            [8528, 8978],
            [8529, 8857],
            [8530, 8747],
            [8531, 8750],
            [8532, 8801],
            [8533, 8780],
            [8534, 8776],
            [8535, 8765],
            [8536, 8733],
            [8537, 8800],
            [8538, 8539, 8814],
            [8540, 8541, 8804],
            [8542, 8734],
            [8543, 8757],
            [8544, 8756],
            [8545, 9794],
            [8546, 9792],
            [8547, 176],
            [8548, 8549, 8242],
            [8550, 8451],
            [8551, 65284],
            [8552, 164],
            [8553, 8554, 65504],
            [8555, 8240],
            [8556, 167],
            [8557, 8470],
            [8558, 9734],
            [8559, 9733],
            [8560, 9675],
            [8561, 9679],
            [8562, 9678],
            [8563, 9671],
            [8564, 9670],
            [8565, 9633],
            [8566, 9632],
            [8567, 9651],
            [8568, 9650],
            [8569, 8251],
            [8570, 8594],
            [8571, 8572, 8592],
            [8573, 8595],
            [8574, 12307],
            [8753, 8772, 9352],
            [8773, 8792, 9332],
            [8793, 8802, 9312],
            [8805, 8814, 12832],
            [8817, 8828, 8544],
            [8993, 8995, 65281],
            [8996, 65509],
            [8997, 9085, 65285],
            [9086, 65507],
            [9249, 9331, 12353],
            [9505, 9590, 12449],
            [9761, 9777, 913],
            [9778, 9784, 931],
            [9793, 9809, 945],
            [9810, 9816, 963],
            [10017, 10022, 1040],
            [10023, 1025],
            [10024, 10049, 1046],
            [10065, 10070, 1072],
            [10071, 1105],
            [10072, 10097, 1078],
            [10273, 257],
            [10274, 225],
            [10275, 462],
            [10276, 224],
            [10277, 275],
            [10278, 233],
            [10279, 283],
            [10280, 232],
            [10281, 299],
            [10282, 237],
            [10283, 464],
            [10284, 236],
            [10285, 333],
            [10286, 243],
            [10287, 466],
            [10288, 242],
            [10289, 363],
            [10290, 250],
            [10291, 468],
            [10292, 249],
            [10293, 470],
            [10294, 472],
            [10295, 474],
            [10296, 476],
            [10297, 252],
            [10298, 234],
            [10309, 10345, 12549],
            [10532, 10607, 9472],
            [12321, 21834],
            [12322, 38463],
            [12323, 22467],
            [12324, 25384],
            [12325, 21710],
            [12326, 21769],
            [12327, 21696],
            [12328, 30353],
            [12329, 30284],
            [12330, 34108],
            [12331, 30702],
            [12332, 33406],
            [12333, 30861],
            [12334, 29233],
            [12335, 38552],
            [12336, 38797],
            [12337, 27688],
            [12338, 23433],
            [12339, 20474],
            [12340, 25353],
            [12341, 26263],
            [12342, 23736],
            [12343, 33018],
            [12344, 26696],
            [12345, 32942],
            [12346, 26114],
            [12347, 30414],
            [12348, 20985],
            [12349, 25942],
            [12350, 29100],
            [12351, 32753],
            [12352, 34948],
            [12353, 20658],
            [12354, 22885],
            [12355, 25034],
            [12356, 28595],
            [12357, 33453],
            [12358, 25420],
            [12359, 25170],
            [12360, 21485],
            [12361, 21543],
            [12362, 31494],
            [12363, 20843],
            [12364, 30116],
            [12365, 24052],
            [12366, 25300],
            [12367, 36299],
            [12368, 38774],
            [12369, 25226],
            [12370, 32793],
            [12371, 22365],
            [12372, 38712],
            [12373, 32610],
            [12374, 29240],
            [12375, 30333],
            [12376, 26575],
            [12377, 30334],
            [12378, 25670],
            [12379, 20336],
            [12380, 36133],
            [12381, 25308],
            [12382, 31255],
            [12383, 26001],
            [12384, 29677],
            [12385, 25644],
            [12386, 25203],
            [12387, 33324],
            [12388, 39041],
            [12389, 26495],
            [12390, 29256],
            [12391, 25198],
            [12392, 25292],
            [12393, 20276],
            [12394, 29923],
            [12395, 21322],
            [12396, 21150],
            [12397, 32458],
            [12398, 37030],
            [12399, 24110],
            [12400, 26758],
            [12401, 27036],
            [12402, 33152],
            [12403, 32465],
            [12404, 26834],
            [12405, 30917],
            [12406, 34444],
            [12407, 38225],
            [12408, 20621],
            [12409, 35876],
            [12410, 33502],
            [12411, 32990],
            [12412, 21253],
            [12413, 35090],
            [12414, 21093],
            [12577, 34180],
            [12578, 38649],
            [12579, 20445],
            [12580, 22561],
            [12581, 39281],
            [12582, 23453],
            [12583, 25265],
            [12584, 25253],
            [12585, 26292],
            [12586, 35961],
            [12587, 40077],
            [12588, 29190],
            [12589, 26479],
            [12590, 30865],
            [12591, 24754],
            [12592, 21329],
            [12593, 21271],
            [12594, 36744],
            [12595, 32972],
            [12596, 36125],
            [12597, 38049],
            [12598, 20493],
            [12599, 29384],
            [12600, 22791],
            [12601, 24811],
            [12602, 28953],
            [12603, 34987],
            [12604, 22868],
            [12605, 33519],
            [12606, 26412],
            [12607, 31528],
            [12608, 23849],
            [12609, 32503],
            [12610, 29997],
            [12611, 27893],
            [12612, 36454],
            [12613, 36856],
            [12614, 36924],
            [12615, 40763],
            [12616, 27604],
            [12617, 37145],
            [12618, 31508],
            [12619, 24444],
            [12620, 30887],
            [12621, 34006],
            [12622, 34109],
            [12623, 27605],
            [12624, 27609],
            [12625, 27606],
            [12626, 24065],
            [12627, 24199],
            [12628, 30201],
            [12629, 38381],
            [12630, 25949],
            [12631, 24330],
            [12632, 24517],
            [12633, 36767],
            [12634, 22721],
            [12635, 33218],
            [12636, 36991],
            [12637, 38491],
            [12638, 38829],
            [12639, 36793],
            [12640, 32534],
            [12641, 36140],
            [12642, 25153],
            [12643, 20415],
            [12644, 21464],
            [12645, 21342],
            [12646, 12647, 36776],
            [12648, 36779],
            [12649, 36941],
            [12650, 26631],
            [12651, 24426],
            [12652, 33176],
            [12653, 34920],
            [12654, 40150],
            [12655, 24971],
            [12656, 21035],
            [12657, 30250],
            [12658, 24428],
            [12659, 25996],
            [12660, 28626],
            [12661, 28392],
            [12662, 23486],
            [12663, 25672],
            [12664, 20853],
            [12665, 20912],
            [12666, 26564],
            [12667, 19993],
            [12668, 31177],
            [12669, 39292],
            [12670, 28851],
            [12833, 30149],
            [12834, 24182],
            [12835, 29627],
            [12836, 33760],
            [12837, 25773],
            [12838, 25320],
            [12839, 38069],
            [12840, 27874],
            [12841, 21338],
            [12842, 21187],
            [12843, 25615],
            [12844, 38082],
            [12845, 31636],
            [12846, 20271],
            [12847, 24091],
            [12848, 33334],
            [12849, 33046],
            [12850, 33162],
            [12851, 28196],
            [12852, 27850],
            [12853, 39539],
            [12854, 25429],
            [12855, 21340],
            [12856, 21754],
            [12857, 34917],
            [12858, 22496],
            [12859, 19981],
            [12860, 24067],
            [12861, 27493],
            [12862, 31807],
            [12863, 37096],
            [12864, 24598],
            [12865, 25830],
            [12866, 29468],
            [12867, 35009],
            [12868, 26448],
            [12869, 25165],
            [12870, 36130],
            [12871, 30572],
            [12872, 36393],
            [12873, 37319],
            [12874, 24425],
            [12875, 33756],
            [12876, 34081],
            [12877, 39184],
            [12878, 21442],
            [12879, 34453],
            [12880, 27531],
            [12881, 24813],
            [12882, 24808],
            [12883, 28799],
            [12884, 33485],
            [12885, 33329],
            [12886, 20179],
            [12887, 27815],
            [12888, 34255],
            [12889, 25805],
            [12890, 31961],
            [12891, 27133],
            [12892, 26361],
            [12893, 33609],
            [12894, 21397],
            [12895, 31574],
            [12896, 20391],
            [12897, 20876],
            [12898, 27979],
            [12899, 23618],
            [12900, 36461],
            [12901, 25554],
            [12902, 21449],
            [12903, 33580],
            [12904, 33590],
            [12905, 26597],
            [12906, 30900],
            [12907, 25661],
            [12908, 23519],
            [12909, 23700],
            [12910, 24046],
            [12911, 35815],
            [12912, 25286],
            [12913, 26612],
            [12914, 35962],
            [12915, 25600],
            [12916, 25530],
            [12917, 34633],
            [12918, 39307],
            [12919, 35863],
            [12920, 32544],
            [12921, 38130],
            [12922, 20135],
            [12923, 38416],
            [12924, 39076],
            [12925, 26124],
            [12926, 29462],
            [13089, 22330],
            [13090, 23581],
            [13091, 24120],
            [13092, 38271],
            [13093, 20607],
            [13094, 32928],
            [13095, 21378],
            [13096, 25950],
            [13097, 30021],
            [13098, 21809],
            [13099, 20513],
            [13100, 36229],
            [13101, 25220],
            [13102, 38046],
            [13103, 26397],
            [13104, 22066],
            [13105, 28526],
            [13106, 24034],
            [13107, 21557],
            [13108, 28818],
            [13109, 36710],
            [13110, 25199],
            [13111, 25764],
            [13112, 25507],
            [13113, 24443],
            [13114, 28552],
            [13115, 37108],
            [13116, 33251],
            [13117, 36784],
            [13118, 23576],
            [13119, 26216],
            [13120, 24561],
            [13121, 27785],
            [13122, 38472],
            [13123, 36225],
            [13124, 34924],
            [13125, 25745],
            [13126, 31216],
            [13127, 22478],
            [13128, 27225],
            [13129, 25104],
            [13130, 21576],
            [13131, 20056],
            [13132, 31243],
            [13133, 24809],
            [13134, 28548],
            [13135, 35802],
            [13136, 25215],
            [13137, 36894],
            [13138, 39563],
            [13139, 31204],
            [13140, 21507],
            [13141, 30196],
            [13142, 25345],
            [13143, 21273],
            [13144, 27744],
            [13145, 36831],
            [13146, 24347],
            [13147, 39536],
            [13148, 32827],
            [13149, 40831],
            [13150, 20360],
            [13151, 23610],
            [13152, 36196],
            [13153, 32709],
            [13154, 26021],
            [13155, 28861],
            [13156, 20805],
            [13157, 20914],
            [13158, 34411],
            [13159, 23815],
            [13160, 23456],
            [13161, 25277],
            [13162, 37228],
            [13163, 30068],
            [13164, 36364],
            [13165, 31264],
            [13166, 24833],
            [13167, 31609],
            [13168, 20167],
            [13169, 32504],
            [13170, 30597],
            [13171, 19985],
            [13172, 33261],
            [13173, 21021],
            [13174, 20986],
            [13175, 27249],
            [13176, 21416],
            [13177, 36487],
            [13178, 38148],
            [13179, 38607],
            [13180, 28353],
            [13181, 38500],
            [13182, 26970],
            [13345, 30784],
            [13346, 20648],
            [13347, 30679],
            [13348, 25616],
            [13349, 35302],
            [13350, 22788],
            [13351, 25571],
            [13352, 24029],
            [13353, 31359],
            [13354, 26941],
            [13355, 20256],
            [13356, 33337],
            [13357, 21912],
            [13358, 20018],
            [13359, 30126],
            [13360, 31383],
            [13361, 24162],
            [13362, 24202],
            [13363, 38383],
            [13364, 21019],
            [13365, 21561],
            [13366, 28810],
            [13367, 25462],
            [13368, 38180],
            [13369, 22402],
            [13370, 26149],
            [13371, 26943],
            [13372, 37255],
            [13373, 21767],
            [13374, 28147],
            [13375, 32431],
            [13376, 34850],
            [13377, 25139],
            [13378, 32496],
            [13379, 30133],
            [13380, 33576],
            [13381, 30913],
            [13382, 38604],
            [13383, 36766],
            [13384, 24904],
            [13385, 29943],
            [13386, 35789],
            [13387, 27492],
            [13388, 21050],
            [13389, 36176],
            [13390, 27425],
            [13391, 32874],
            [13392, 33905],
            [13393, 22257],
            [13394, 21254],
            [13395, 20174],
            [13396, 19995],
            [13397, 20945],
            [13398, 31895],
            [13399, 37259],
            [13400, 31751],
            [13401, 20419],
            [13402, 36479],
            [13403, 31713],
            [13404, 31388],
            [13405, 25703],
            [13406, 23828],
            [13407, 20652],
            [13408, 33030],
            [13409, 30209],
            [13410, 31929],
            [13411, 28140],
            [13412, 32736],
            [13413, 26449],
            [13414, 23384],
            [13415, 23544],
            [13416, 30923],
            [13417, 25774],
            [13418, 25619],
            [13419, 25514],
            [13420, 25387],
            [13421, 38169],
            [13422, 25645],
            [13423, 36798],
            [13424, 31572],
            [13425, 30249],
            [13426, 25171],
            [13427, 22823],
            [13428, 21574],
            [13429, 27513],
            [13430, 20643],
            [13431, 25140],
            [13432, 24102],
            [13433, 27526],
            [13434, 20195],
            [13435, 36151],
            [13436, 34955],
            [13437, 24453],
            [13438, 36910],
            [13601, 24608],
            [13602, 32829],
            [13603, 25285],
            [13604, 20025],
            [13605, 21333],
            [13606, 37112],
            [13607, 25528],
            [13608, 32966],
            [13609, 26086],
            [13610, 27694],
            [13611, 20294],
            [13612, 24814],
            [13613, 28129],
            [13614, 35806],
            [13615, 24377],
            [13616, 34507],
            [13617, 24403],
            [13618, 25377],
            [13619, 20826],
            [13620, 33633],
            [13621, 26723],
            [13622, 20992],
            [13623, 25443],
            [13624, 36424],
            [13625, 20498],
            [13626, 23707],
            [13627, 31095],
            [13628, 23548],
            [13629, 21040],
            [13630, 31291],
            [13631, 24764],
            [13632, 36947],
            [13633, 30423],
            [13634, 24503],
            [13635, 24471],
            [13636, 30340],
            [13637, 36460],
            [13638, 28783],
            [13639, 30331],
            [13640, 31561],
            [13641, 30634],
            [13642, 20979],
            [13643, 37011],
            [13644, 22564],
            [13645, 20302],
            [13646, 28404],
            [13647, 36842],
            [13648, 25932],
            [13649, 31515],
            [13650, 29380],
            [13651, 28068],
            [13652, 32735],
            [13653, 23265],
            [13654, 25269],
            [13655, 24213],
            [13656, 22320],
            [13657, 33922],
            [13658, 31532],
            [13659, 24093],
            [13660, 24351],
            [13661, 36882],
            [13662, 32532],
            [13663, 39072],
            [13664, 25474],
            [13665, 28359],
            [13666, 30872],
            [13667, 28857],
            [13668, 20856],
            [13669, 38747],
            [13670, 22443],
            [13671, 30005],
            [13672, 20291],
            [13673, 30008],
            [13674, 24215],
            [13675, 24806],
            [13676, 22880],
            [13677, 28096],
            [13678, 27583],
            [13679, 30857],
            [13680, 21500],
            [13681, 38613],
            [13682, 20939],
            [13683, 20993],
            [13684, 25481],
            [13685, 21514],
            [13686, 38035],
            [13687, 35843],
            [13688, 36300],
            [13689, 29241],
            [13690, 30879],
            [13691, 34678],
            [13692, 36845],
            [13693, 35853],
            [13694, 21472],
            [13857, 19969],
            [13858, 30447],
            [13859, 21486],
            [13860, 38025],
            [13861, 39030],
            [13862, 40718],
            [13863, 38189],
            [13864, 23450],
            [13865, 35746],
            [13866, 20002],
            [13867, 19996],
            [13868, 20908],
            [13869, 33891],
            [13870, 25026],
            [13871, 21160],
            [13872, 26635],
            [13873, 20375],
            [13874, 24683],
            [13875, 20923],
            [13876, 27934],
            [13877, 20828],
            [13878, 25238],
            [13879, 26007],
            [13880, 38497],
            [13881, 35910],
            [13882, 36887],
            [13883, 30168],
            [13884, 37117],
            [13885, 30563],
            [13886, 27602],
            [13887, 29322],
            [13888, 29420],
            [13889, 35835],
            [13890, 22581],
            [13891, 30585],
            [13892, 36172],
            [13893, 26460],
            [13894, 38208],
            [13895, 32922],
            [13896, 24230],
            [13897, 28193],
            [13898, 22930],
            [13899, 31471],
            [13900, 30701],
            [13901, 38203],
            [13902, 27573],
            [13903, 26029],
            [13904, 32526],
            [13905, 22534],
            [13906, 20817],
            [13907, 38431],
            [13908, 23545],
            [13909, 22697],
            [13910, 21544],
            [13911, 36466],
            [13912, 25958],
            [13913, 39039],
            [13914, 22244],
            [13915, 38045],
            [13916, 30462],
            [13917, 36929],
            [13918, 25479],
            [13919, 21702],
            [13920, 22810],
            [13921, 22842],
            [13922, 22427],
            [13923, 36530],
            [13924, 26421],
            [13925, 36346],
            [13926, 33333],
            [13927, 21057],
            [13928, 24816],
            [13929, 22549],
            [13930, 34558],
            [13931, 23784],
            [13932, 40517],
            [13933, 20420],
            [13934, 39069],
            [13935, 35769],
            [13936, 23077],
            [13937, 24694],
            [13938, 21380],
            [13939, 25212],
            [13940, 36943],
            [13941, 37122],
            [13942, 39295],
            [13943, 24681],
            [13944, 32780],
            [13945, 20799],
            [13946, 32819],
            [13947, 23572],
            [13948, 39285],
            [13949, 27953],
            [13950, 20108],
            [14113, 36144],
            [14114, 21457],
            [14115, 32602],
            [14116, 31567],
            [14117, 20240],
            [14118, 20047],
            [14119, 38400],
            [14120, 27861],
            [14121, 29648],
            [14122, 34281],
            [14123, 24070],
            [14124, 30058],
            [14125, 32763],
            [14126, 27146],
            [14127, 30718],
            [14128, 38034],
            [14129, 32321],
            [14130, 20961],
            [14131, 28902],
            [14132, 21453],
            [14133, 36820],
            [14134, 33539],
            [14135, 36137],
            [14136, 29359],
            [14137, 39277],
            [14138, 27867],
            [14139, 22346],
            [14140, 33459],
            [14141, 26041],
            [14142, 32938],
            [14143, 25151],
            [14144, 38450],
            [14145, 22952],
            [14146, 20223],
            [14147, 35775],
            [14148, 32442],
            [14149, 25918],
            [14150, 33778],
            [14151, 38750],
            [14152, 21857],
            [14153, 39134],
            [14154, 32933],
            [14155, 21290],
            [14156, 35837],
            [14157, 21536],
            [14158, 32954],
            [14159, 24223],
            [14160, 27832],
            [14161, 36153],
            [14162, 33452],
            [14163, 37210],
            [14164, 21545],
            [14165, 27675],
            [14166, 20998],
            [14167, 32439],
            [14168, 22367],
            [14169, 28954],
            [14170, 27774],
            [14171, 31881],
            [14172, 22859],
            [14173, 20221],
            [14174, 24575],
            [14175, 24868],
            [14176, 31914],
            [14177, 20016],
            [14178, 23553],
            [14179, 26539],
            [14180, 34562],
            [14181, 23792],
            [14182, 38155],
            [14183, 39118],
            [14184, 30127],
            [14185, 28925],
            [14186, 36898],
            [14187, 20911],
            [14188, 32541],
            [14189, 35773],
            [14190, 22857],
            [14191, 20964],
            [14192, 20315],
            [14193, 21542],
            [14194, 22827],
            [14195, 25975],
            [14196, 32932],
            [14197, 23413],
            [14198, 25206],
            [14199, 25282],
            [14200, 36752],
            [14201, 24133],
            [14202, 27679],
            [14203, 31526],
            [14204, 20239],
            [14205, 20440],
            [14206, 26381],
            [14369, 28014],
            [14370, 28074],
            [14371, 31119],
            [14372, 34993],
            [14373, 24343],
            [14374, 29995],
            [14375, 25242],
            [14376, 36741],
            [14377, 20463],
            [14378, 37340],
            [14379, 26023],
            [14380, 33071],
            [14381, 33105],
            [14382, 24220],
            [14383, 33104],
            [14384, 36212],
            [14385, 21103],
            [14386, 35206],
            [14387, 36171],
            [14388, 22797],
            [14389, 20613],
            [14390, 20184],
            [14391, 38428],
            [14392, 29238],
            [14393, 33145],
            [14394, 36127],
            [14395, 23500],
            [14396, 35747],
            [14397, 38468],
            [14398, 22919],
            [14399, 32538],
            [14400, 21648],
            [14401, 22134],
            [14402, 22030],
            [14403, 35813],
            [14404, 25913],
            [14405, 27010],
            [14406, 38041],
            [14407, 30422],
            [14408, 28297],
            [14409, 24178],
            [14410, 29976],
            [14411, 26438],
            [14412, 26577],
            [14413, 31487],
            [14414, 32925],
            [14415, 36214],
            [14416, 24863],
            [14417, 31174],
            [14418, 25954],
            [14419, 36195],
            [14420, 20872],
            [14421, 21018],
            [14422, 38050],
            [14423, 32568],
            [14424, 32923],
            [14425, 32434],
            [14426, 23703],
            [14427, 28207],
            [14428, 26464],
            [14429, 31705],
            [14430, 30347],
            [14431, 39640],
            [14432, 33167],
            [14433, 32660],
            [14434, 31957],
            [14435, 25630],
            [14436, 38224],
            [14437, 31295],
            [14438, 21578],
            [14439, 21733],
            [14440, 27468],
            [14441, 25601],
            [14442, 25096],
            [14443, 40509],
            [14444, 33011],
            [14445, 30105],
            [14446, 21106],
            [14447, 38761],
            [14448, 33883],
            [14449, 26684],
            [14450, 34532],
            [14451, 38401],
            [14452, 38548],
            [14453, 38124],
            [14454, 20010],
            [14455, 21508],
            [14456, 32473],
            [14457, 26681],
            [14458, 36319],
            [14459, 32789],
            [14460, 26356],
            [14461, 24218],
            [14462, 32697],
            [14625, 22466],
            [14626, 32831],
            [14627, 26775],
            [14628, 24037],
            [14629, 25915],
            [14630, 21151],
            [14631, 24685],
            [14632, 40858],
            [14633, 20379],
            [14634, 36524],
            [14635, 20844],
            [14636, 23467],
            [14637, 24339],
            [14638, 24041],
            [14639, 27742],
            [14640, 25329],
            [14641, 36129],
            [14642, 20849],
            [14643, 38057],
            [14644, 21246],
            [14645, 27807],
            [14646, 33503],
            [14647, 29399],
            [14648, 22434],
            [14649, 26500],
            [14650, 36141],
            [14651, 22815],
            [14652, 36764],
            [14653, 33735],
            [14654, 21653],
            [14655, 31629],
            [14656, 20272],
            [14657, 27837],
            [14658, 23396],
            [14659, 22993],
            [14660, 40723],
            [14661, 21476],
            [14662, 34506],
            [14663, 39592],
            [14664, 35895],
            [14665, 32929],
            [14666, 25925],
            [14667, 39038],
            [14668, 22266],
            [14669, 38599],
            [14670, 21038],
            [14671, 29916],
            [14672, 21072],
            [14673, 23521],
            [14674, 25346],
            [14675, 35074],
            [14676, 20054],
            [14677, 25296],
            [14678, 24618],
            [14679, 26874],
            [14680, 20851],
            [14681, 23448],
            [14682, 20896],
            [14683, 35266],
            [14684, 31649],
            [14685, 39302],
            [14686, 32592],
            [14687, 24815],
            [14688, 28748],
            [14689, 36143],
            [14690, 20809],
            [14691, 24191],
            [14692, 36891],
            [14693, 29808],
            [14694, 35268],
            [14695, 22317],
            [14696, 30789],
            [14697, 24402],
            [14698, 40863],
            [14699, 38394],
            [14700, 36712],
            [14701, 39740],
            [14702, 35809],
            [14703, 30328],
            [14704, 26690],
            [14705, 26588],
            [14706, 36330],
            [14707, 36149],
            [14708, 21053],
            [14709, 36746],
            [14710, 28378],
            [14711, 26829],
            [14712, 38149],
            [14713, 37101],
            [14714, 22269],
            [14715, 26524],
            [14716, 35065],
            [14717, 36807],
            [14718, 21704],
            [14881, 39608],
            [14882, 23401],
            [14883, 28023],
            [14884, 27686],
            [14885, 20133],
            [14886, 23475],
            [14887, 39559],
            [14888, 37219],
            [14889, 25000],
            [14890, 37039],
            [14891, 38889],
            [14892, 21547],
            [14893, 28085],
            [14894, 23506],
            [14895, 20989],
            [14896, 21898],
            [14897, 32597],
            [14898, 32752],
            [14899, 25788],
            [14900, 25421],
            [14901, 26097],
            [14902, 25022],
            [14903, 24717],
            [14904, 28938],
            [14905, 27735],
            [14906, 27721],
            [14907, 22831],
            [14908, 26477],
            [14909, 33322],
            [14910, 22741],
            [14911, 22158],
            [14912, 35946],
            [14913, 27627],
            [14914, 37085],
            [14915, 22909],
            [14916, 32791],
            [14917, 21495],
            [14918, 28009],
            [14919, 21621],
            [14920, 21917],
            [14921, 33655],
            [14922, 33743],
            [14923, 26680],
            [14924, 31166],
            [14925, 21644],
            [14926, 20309],
            [14927, 21512],
            [14928, 30418],
            [14929, 35977],
            [14930, 38402],
            [14931, 27827],
            [14932, 28088],
            [14933, 36203],
            [14934, 35088],
            [14935, 40548],
            [14936, 36154],
            [14937, 22079],
            [14938, 40657],
            [14939, 30165],
            [14940, 24456],
            [14941, 29408],
            [14942, 24680],
            [14943, 21756],
            [14944, 20136],
            [14945, 27178],
            [14946, 34913],
            [14947, 24658],
            [14948, 36720],
            [14949, 21700],
            [14950, 28888],
            [14951, 34425],
            [14952, 40511],
            [14953, 27946],
            [14954, 23439],
            [14955, 24344],
            [14956, 32418],
            [14957, 21897],
            [14958, 20399],
            [14959, 29492],
            [14960, 21564],
            [14961, 21402],
            [14962, 20505],
            [14963, 21518],
            [14964, 21628],
            [14965, 20046],
            [14966, 24573],
            [14967, 29786],
            [14968, 22774],
            [14969, 33899],
            [14970, 32993],
            [14971, 34676],
            [14972, 29392],
            [14973, 31946],
            [14974, 28246],
            [15137, 24359],
            [15138, 34382],
            [15139, 21804],
            [15140, 25252],
            [15141, 20114],
            [15142, 27818],
            [15143, 25143],
            [15144, 33457],
            [15145, 21719],
            [15146, 21326],
            [15147, 29502],
            [15148, 28369],
            [15149, 30011],
            [15150, 21010],
            [15151, 21270],
            [15152, 35805],
            [15153, 27088],
            [15154, 24458],
            [15155, 24576],
            [15156, 28142],
            [15157, 22351],
            [15158, 27426],
            [15159, 29615],
            [15160, 26707],
            [15161, 36824],
            [15162, 32531],
            [15163, 25442],
            [15164, 24739],
            [15165, 21796],
            [15166, 30186],
            [15167, 35938],
            [15168, 28949],
            [15169, 28067],
            [15170, 23462],
            [15171, 24187],
            [15172, 33618],
            [15173, 24908],
            [15174, 40644],
            [15175, 30970],
            [15176, 34647],
            [15177, 31783],
            [15178, 30343],
            [15179, 20976],
            [15180, 24822],
            [15181, 29004],
            [15182, 26179],
            [15183, 24140],
            [15184, 24653],
            [15185, 35854],
            [15186, 28784],
            [15187, 25381],
            [15188, 36745],
            [15189, 24509],
            [15190, 24674],
            [15191, 34516],
            [15192, 22238],
            [15193, 27585],
            [15194, 24724],
            [15195, 24935],
            [15196, 21321],
            [15197, 24800],
            [15198, 26214],
            [15199, 36159],
            [15200, 31229],
            [15201, 20250],
            [15202, 28905],
            [15203, 27719],
            [15204, 35763],
            [15205, 35826],
            [15206, 32472],
            [15207, 33636],
            [15208, 26127],
            [15209, 23130],
            [15210, 39746],
            [15211, 27985],
            [15212, 28151],
            [15213, 35905],
            [15214, 27963],
            [15215, 20249],
            [15216, 28779],
            [15217, 33719],
            [15218, 25110],
            [15219, 24785],
            [15220, 38669],
            [15221, 36135],
            [15222, 31096],
            [15223, 20987],
            [15224, 22334],
            [15225, 22522],
            [15226, 26426],
            [15227, 30072],
            [15228, 31293],
            [15229, 31215],
            [15230, 31637],
            [15393, 32908],
            [15394, 39269],
            [15395, 36857],
            [15396, 28608],
            [15397, 35749],
            [15398, 40481],
            [15399, 23020],
            [15400, 32489],
            [15401, 32521],
            [15402, 21513],
            [15403, 26497],
            [15404, 26840],
            [15405, 36753],
            [15406, 31821],
            [15407, 38598],
            [15408, 21450],
            [15409, 24613],
            [15410, 30142],
            [15411, 27762],
            [15412, 21363],
            [15413, 23241],
            [15414, 32423],
            [15415, 25380],
            [15416, 20960],
            [15417, 33034],
            [15418, 24049],
            [15419, 34015],
            [15420, 25216],
            [15421, 20864],
            [15422, 23395],
            [15423, 20238],
            [15424, 31085],
            [15425, 21058],
            [15426, 24760],
            [15427, 27982],
            [15428, 23492],
            [15429, 23490],
            [15430, 35745],
            [15431, 35760],
            [15432, 26082],
            [15433, 24524],
            [15434, 38469],
            [15435, 22931],
            [15436, 32487],
            [15437, 32426],
            [15438, 22025],
            [15439, 26551],
            [15440, 22841],
            [15441, 20339],
            [15442, 23478],
            [15443, 21152],
            [15444, 33626],
            [15445, 39050],
            [15446, 36158],
            [15447, 30002],
            [15448, 38078],
            [15449, 20551],
            [15450, 31292],
            [15451, 20215],
            [15452, 26550],
            [15453, 39550],
            [15454, 23233],
            [15455, 27516],
            [15456, 30417],
            [15457, 22362],
            [15458, 23574],
            [15459, 31546],
            [15460, 38388],
            [15461, 29006],
            [15462, 20860],
            [15463, 32937],
            [15464, 33392],
            [15465, 22904],
            [15466, 32516],
            [15467, 33575],
            [15468, 26816],
            [15469, 26604],
            [15470, 30897],
            [15471, 30839],
            [15472, 25315],
            [15473, 25441],
            [15474, 31616],
            [15475, 20461],
            [15476, 21098],
            [15477, 20943],
            [15478, 33616],
            [15479, 27099],
            [15480, 37492],
            [15481, 36341],
            [15482, 36145],
            [15483, 35265],
            [15484, 38190],
            [15485, 31661],
            [15486, 20214],
            [15649, 20581],
            [15650, 33328],
            [15651, 21073],
            [15652, 39279],
            [15653, 28176],
            [15654, 28293],
            [15655, 28071],
            [15656, 24314],
            [15657, 20725],
            [15658, 23004],
            [15659, 23558],
            [15660, 27974],
            [15661, 27743],
            [15662, 30086],
            [15663, 33931],
            [15664, 26728],
            [15665, 22870],
            [15666, 35762],
            [15667, 21280],
            [15668, 37233],
            [15669, 38477],
            [15670, 34121],
            [15671, 26898],
            [15672, 30977],
            [15673, 28966],
            [15674, 33014],
            [15675, 20132],
            [15676, 37066],
            [15677, 27975],
            [15678, 39556],
            [15679, 23047],
            [15680, 22204],
            [15681, 25605],
            [15682, 38128],
            [15683, 30699],
            [15684, 20389],
            [15685, 33050],
            [15686, 29409],
            [15687, 35282],
            [15688, 39290],
            [15689, 32564],
            [15690, 32478],
            [15691, 21119],
            [15692, 25945],
            [15693, 37237],
            [15694, 36735],
            [15695, 36739],
            [15696, 21483],
            [15697, 31382],
            [15698, 25581],
            [15699, 25509],
            [15700, 30342],
            [15701, 31224],
            [15702, 34903],
            [15703, 38454],
            [15704, 25130],
            [15705, 21163],
            [15706, 33410],
            [15707, 26708],
            [15708, 26480],
            [15709, 25463],
            [15710, 30571],
            [15711, 31469],
            [15712, 27905],
            [15713, 32467],
            [15714, 35299],
            [15715, 22992],
            [15716, 25106],
            [15717, 34249],
            [15718, 33445],
            [15719, 30028],
            [15720, 20511],
            [15721, 20171],
            [15722, 30117],
            [15723, 35819],
            [15724, 23626],
            [15725, 24062],
            [15726, 31563],
            [15727, 26020],
            [15728, 37329],
            [15729, 20170],
            [15730, 27941],
            [15731, 35167],
            [15732, 32039],
            [15733, 38182],
            [15734, 20165],
            [15735, 35880],
            [15736, 36827],
            [15737, 38771],
            [15738, 26187],
            [15739, 31105],
            [15740, 36817],
            [15741, 28908],
            [15742, 28024],
            [15905, 23613],
            [15906, 21170],
            [15907, 33606],
            [15908, 20834],
            [15909, 33550],
            [15910, 30555],
            [15911, 26230],
            [15912, 40120],
            [15913, 20140],
            [15914, 24778],
            [15915, 31934],
            [15916, 31923],
            [15917, 32463],
            [15918, 20117],
            [15919, 35686],
            [15920, 26223],
            [15921, 39048],
            [15922, 38745],
            [15923, 22659],
            [15924, 25964],
            [15925, 38236],
            [15926, 24452],
            [15927, 30153],
            [15928, 38742],
            [15929, 31455],
            [15930, 31454],
            [15931, 20928],
            [15932, 28847],
            [15933, 31384],
            [15934, 25578],
            [15935, 31350],
            [15936, 32416],
            [15937, 29590],
            [15938, 38893],
            [15939, 20037],
            [15940, 28792],
            [15941, 20061],
            [15942, 37202],
            [15943, 21417],
            [15944, 25937],
            [15945, 26087],
            [15946, 33276],
            [15947, 33285],
            [15948, 21646],
            [15949, 23601],
            [15950, 30106],
            [15951, 38816],
            [15952, 25304],
            [15953, 29401],
            [15954, 30141],
            [15955, 23621],
            [15956, 39545],
            [15957, 33738],
            [15958, 23616],
            [15959, 21632],
            [15960, 30697],
            [15961, 20030],
            [15962, 27822],
            [15963, 32858],
            [15964, 25298],
            [15965, 25454],
            [15966, 24040],
            [15967, 20855],
            [15968, 36317],
            [15969, 36382],
            [15970, 38191],
            [15971, 20465],
            [15972, 21477],
            [15973, 24807],
            [15974, 28844],
            [15975, 21095],
            [15976, 25424],
            [15977, 40515],
            [15978, 23071],
            [15979, 20518],
            [15980, 30519],
            [15981, 21367],
            [15982, 32482],
            [15983, 25733],
            [15984, 25899],
            [15985, 25225],
            [15986, 25496],
            [15987, 20500],
            [15988, 29237],
            [15989, 35273],
            [15990, 20915],
            [15991, 35776],
            [15992, 32477],
            [15993, 22343],
            [15994, 33740],
            [15995, 38055],
            [15996, 20891],
            [15997, 21531],
            [15998, 23803],
            [16161, 20426],
            [16162, 31459],
            [16163, 27994],
            [16164, 37089],
            [16165, 39567],
            [16166, 21888],
            [16167, 21654],
            [16168, 21345],
            [16169, 21679],
            [16170, 24320],
            [16171, 25577],
            [16172, 26999],
            [16173, 20975],
            [16174, 24936],
            [16175, 21002],
            [16176, 22570],
            [16177, 21208],
            [16178, 22350],
            [16179, 30733],
            [16180, 30475],
            [16181, 24247],
            [16182, 24951],
            [16183, 31968],
            [16184, 25179],
            [16185, 25239],
            [16186, 20130],
            [16187, 28821],
            [16188, 32771],
            [16189, 25335],
            [16190, 28900],
            [16191, 38752],
            [16192, 22391],
            [16193, 33499],
            [16194, 26607],
            [16195, 26869],
            [16196, 30933],
            [16197, 39063],
            [16198, 31185],
            [16199, 22771],
            [16200, 21683],
            [16201, 21487],
            [16202, 28212],
            [16203, 20811],
            [16204, 21051],
            [16205, 23458],
            [16206, 35838],
            [16207, 32943],
            [16208, 21827],
            [16209, 22438],
            [16210, 24691],
            [16211, 22353],
            [16212, 21549],
            [16213, 31354],
            [16214, 24656],
            [16215, 23380],
            [16216, 25511],
            [16217, 25248],
            [16218, 21475],
            [16219, 25187],
            [16220, 23495],
            [16221, 26543],
            [16222, 21741],
            [16223, 31391],
            [16224, 33510],
            [16225, 37239],
            [16226, 24211],
            [16227, 35044],
            [16228, 22840],
            [16229, 22446],
            [16230, 25358],
            [16231, 36328],
            [16232, 33007],
            [16233, 22359],
            [16234, 31607],
            [16235, 20393],
            [16236, 24555],
            [16237, 23485],
            [16238, 27454],
            [16239, 21281],
            [16240, 31568],
            [16241, 29378],
            [16242, 26694],
            [16243, 30719],
            [16244, 30518],
            [16245, 26103],
            [16246, 20917],
            [16247, 20111],
            [16248, 30420],
            [16249, 23743],
            [16250, 31397],
            [16251, 33909],
            [16252, 22862],
            [16253, 39745],
            [16254, 20608],
            [16417, 39304],
            [16418, 24871],
            [16419, 28291],
            [16420, 22372],
            [16421, 26118],
            [16422, 25414],
            [16423, 22256],
            [16424, 25324],
            [16425, 25193],
            [16426, 24275],
            [16427, 38420],
            [16428, 22403],
            [16429, 25289],
            [16430, 21895],
            [16431, 34593],
            [16432, 33098],
            [16433, 36771],
            [16434, 21862],
            [16435, 33713],
            [16436, 26469],
            [16437, 36182],
            [16438, 34013],
            [16439, 23146],
            [16440, 26639],
            [16441, 25318],
            [16442, 31726],
            [16443, 38417],
            [16444, 20848],
            [16445, 28572],
            [16446, 35888],
            [16447, 25597],
            [16448, 35272],
            [16449, 25042],
            [16450, 32518],
            [16451, 28866],
            [16452, 28389],
            [16453, 29701],
            [16454, 27028],
            [16455, 29436],
            [16456, 24266],
            [16457, 37070],
            [16458, 26391],
            [16459, 28010],
            [16460, 25438],
            [16461, 21171],
            [16462, 29282],
            [16463, 32769],
            [16464, 20332],
            [16465, 23013],
            [16466, 37226],
            [16467, 28889],
            [16468, 28061],
            [16469, 21202],
            [16470, 20048],
            [16471, 38647],
            [16472, 38253],
            [16473, 34174],
            [16474, 30922],
            [16475, 32047],
            [16476, 20769],
            [16477, 22418],
            [16478, 25794],
            [16479, 32907],
            [16480, 31867],
            [16481, 27882],
            [16482, 26865],
            [16483, 26974],
            [16484, 20919],
            [16485, 21400],
            [16486, 26792],
            [16487, 29313],
            [16488, 40654],
            [16489, 31729],
            [16490, 29432],
            [16491, 31163],
            [16492, 28435],
            [16493, 29702],
            [16494, 26446],
            [16495, 37324],
            [16496, 40100],
            [16497, 31036],
            [16498, 33673],
            [16499, 33620],
            [16500, 21519],
            [16501, 26647],
            [16502, 20029],
            [16503, 21385],
            [16504, 21169],
            [16505, 30782],
            [16506, 21382],
            [16507, 21033],
            [16508, 20616],
            [16509, 20363],
            [16510, 20432],
            [16673, 30178],
            [16674, 31435],
            [16675, 31890],
            [16676, 27813],
            [16677, 38582],
            [16678, 21147],
            [16679, 29827],
            [16680, 21737],
            [16681, 20457],
            [16682, 32852],
            [16683, 33714],
            [16684, 36830],
            [16685, 38256],
            [16686, 24265],
            [16687, 24604],
            [16688, 28063],
            [16689, 24088],
            [16690, 25947],
            [16691, 33080],
            [16692, 38142],
            [16693, 24651],
            [16694, 28860],
            [16695, 32451],
            [16696, 31918],
            [16697, 20937],
            [16698, 26753],
            [16699, 31921],
            [16700, 33391],
            [16701, 20004],
            [16702, 36742],
            [16703, 37327],
            [16704, 26238],
            [16705, 20142],
            [16706, 35845],
            [16707, 25769],
            [16708, 32842],
            [16709, 20698],
            [16710, 30103],
            [16711, 29134],
            [16712, 23525],
            [16713, 36797],
            [16714, 28518],
            [16715, 20102],
            [16716, 25730],
            [16717, 38243],
            [16718, 24278],
            [16719, 26009],
            [16720, 21015],
            [16721, 35010],
            [16722, 28872],
            [16723, 21155],
            [16724, 29454],
            [16725, 29747],
            [16726, 26519],
            [16727, 30967],
            [16728, 38678],
            [16729, 20020],
            [16730, 37051],
            [16731, 40158],
            [16732, 28107],
            [16733, 20955],
            [16734, 36161],
            [16735, 21533],
            [16736, 25294],
            [16737, 29618],
            [16738, 33777],
            [16739, 38646],
            [16740, 40836],
            [16741, 38083],
            [16742, 20278],
            [16743, 32666],
            [16744, 20940],
            [16745, 28789],
            [16746, 38517],
            [16747, 23725],
            [16748, 39046],
            [16749, 21478],
            [16750, 20196],
            [16751, 28316],
            [16752, 29705],
            [16753, 27060],
            [16754, 30827],
            [16755, 39311],
            [16756, 30041],
            [16757, 21016],
            [16758, 30244],
            [16759, 27969],
            [16760, 26611],
            [16761, 20845],
            [16762, 40857],
            [16763, 32843],
            [16764, 21657],
            [16765, 31548],
            [16766, 31423],
            [16929, 38534],
            [16930, 22404],
            [16931, 25314],
            [16932, 38471],
            [16933, 27004],
            [16934, 23044],
            [16935, 25602],
            [16936, 31699],
            [16937, 28431],
            [16938, 38475],
            [16939, 33446],
            [16940, 21346],
            [16941, 39045],
            [16942, 24208],
            [16943, 28809],
            [16944, 25523],
            [16945, 21348],
            [16946, 34383],
            [16947, 40065],
            [16948, 40595],
            [16949, 30860],
            [16950, 38706],
            [16951, 36335],
            [16952, 36162],
            [16953, 40575],
            [16954, 28510],
            [16955, 31108],
            [16956, 24405],
            [16957, 38470],
            [16958, 25134],
            [16959, 39540],
            [16960, 21525],
            [16961, 38109],
            [16962, 20387],
            [16963, 26053],
            [16964, 23653],
            [16965, 23649],
            [16966, 32533],
            [16967, 34385],
            [16968, 27695],
            [16969, 24459],
            [16970, 29575],
            [16971, 28388],
            [16972, 32511],
            [16973, 23782],
            [16974, 25371],
            [16975, 23402],
            [16976, 28390],
            [16977, 21365],
            [16978, 20081],
            [16979, 25504],
            [16980, 30053],
            [16981, 25249],
            [16982, 36718],
            [16983, 20262],
            [16984, 20177],
            [16985, 27814],
            [16986, 32438],
            [16987, 35770],
            [16988, 33821],
            [16989, 34746],
            [16990, 32599],
            [16991, 36923],
            [16992, 38179],
            [16993, 31657],
            [16994, 39585],
            [16995, 35064],
            [16996, 33853],
            [16997, 27931],
            [16998, 39558],
            [16999, 32476],
            [17000, 22920],
            [17001, 40635],
            [17002, 29595],
            [17003, 30721],
            [17004, 34434],
            [17005, 39532],
            [17006, 39554],
            [17007, 22043],
            [17008, 21527],
            [17009, 22475],
            [17010, 20080],
            [17011, 40614],
            [17012, 21334],
            [17013, 36808],
            [17014, 33033],
            [17015, 30610],
            [17016, 39314],
            [17017, 34542],
            [17018, 28385],
            [17019, 34067],
            [17020, 26364],
            [17021, 24930],
            [17022, 28459],
            [17185, 35881],
            [17186, 33426],
            [17187, 33579],
            [17188, 30450],
            [17189, 27667],
            [17190, 24537],
            [17191, 33725],
            [17192, 29483],
            [17193, 33541],
            [17194, 38170],
            [17195, 27611],
            [17196, 30683],
            [17197, 38086],
            [17198, 21359],
            [17199, 33538],
            [17200, 20882],
            [17201, 24125],
            [17202, 35980],
            [17203, 36152],
            [17204, 20040],
            [17205, 29611],
            [17206, 26522],
            [17207, 26757],
            [17208, 37238],
            [17209, 38665],
            [17210, 29028],
            [17211, 27809],
            [17212, 30473],
            [17213, 23186],
            [17214, 38209],
            [17215, 27599],
            [17216, 32654],
            [17217, 26151],
            [17218, 23504],
            [17219, 22969],
            [17220, 23194],
            [17221, 38376],
            [17222, 38391],
            [17223, 20204],
            [17224, 33804],
            [17225, 33945],
            [17226, 27308],
            [17227, 30431],
            [17228, 38192],
            [17229, 29467],
            [17230, 26790],
            [17231, 23391],
            [17232, 30511],
            [17233, 37274],
            [17234, 38753],
            [17235, 31964],
            [17236, 36855],
            [17237, 35868],
            [17238, 24357],
            [17239, 31859],
            [17240, 31192],
            [17241, 35269],
            [17242, 27852],
            [17243, 34588],
            [17244, 23494],
            [17245, 24130],
            [17246, 26825],
            [17247, 30496],
            [17248, 32501],
            [17249, 20885],
            [17250, 20813],
            [17251, 21193],
            [17252, 23081],
            [17253, 32517],
            [17254, 38754],
            [17255, 33495],
            [17256, 25551],
            [17257, 30596],
            [17258, 34256],
            [17259, 31186],
            [17260, 28218],
            [17261, 24217],
            [17262, 22937],
            [17263, 34065],
            [17264, 28781],
            [17265, 27665],
            [17266, 25279],
            [17267, 30399],
            [17268, 25935],
            [17269, 24751],
            [17270, 38397],
            [17271, 26126],
            [17272, 34719],
            [17273, 40483],
            [17274, 38125],
            [17275, 21517],
            [17276, 21629],
            [17277, 35884],
            [17278, 25720],
            [17441, 25721],
            [17442, 34321],
            [17443, 27169],
            [17444, 33180],
            [17445, 30952],
            [17446, 25705],
            [17447, 39764],
            [17448, 25273],
            [17449, 26411],
            [17450, 33707],
            [17451, 22696],
            [17452, 40664],
            [17453, 27819],
            [17454, 28448],
            [17455, 23518],
            [17456, 38476],
            [17457, 35851],
            [17458, 29279],
            [17459, 26576],
            [17460, 25287],
            [17461, 29281],
            [17462, 20137],
            [17463, 22982],
            [17464, 27597],
            [17465, 22675],
            [17466, 26286],
            [17467, 24149],
            [17468, 21215],
            [17469, 24917],
            [17470, 26408],
            [17471, 30446],
            [17472, 30566],
            [17473, 29287],
            [17474, 31302],
            [17475, 25343],
            [17476, 21738],
            [17477, 21584],
            [17478, 38048],
            [17479, 37027],
            [17480, 23068],
            [17481, 32435],
            [17482, 27670],
            [17483, 20035],
            [17484, 22902],
            [17485, 32784],
            [17486, 22856],
            [17487, 21335],
            [17488, 30007],
            [17489, 38590],
            [17490, 22218],
            [17491, 25376],
            [17492, 33041],
            [17493, 24700],
            [17494, 38393],
            [17495, 28118],
            [17496, 21602],
            [17497, 39297],
            [17498, 20869],
            [17499, 23273],
            [17500, 33021],
            [17501, 22958],
            [17502, 38675],
            [17503, 20522],
            [17504, 27877],
            [17505, 23612],
            [17506, 25311],
            [17507, 20320],
            [17508, 21311],
            [17509, 33147],
            [17510, 36870],
            [17511, 28346],
            [17512, 34091],
            [17513, 25288],
            [17514, 24180],
            [17515, 30910],
            [17516, 25781],
            [17517, 25467],
            [17518, 24565],
            [17519, 23064],
            [17520, 37247],
            [17521, 40479],
            [17522, 23615],
            [17523, 25423],
            [17524, 32834],
            [17525, 23421],
            [17526, 21870],
            [17527, 38218],
            [17528, 38221],
            [17529, 28037],
            [17530, 24744],
            [17531, 26592],
            [17532, 29406],
            [17533, 20957],
            [17534, 23425],
            [17697, 25319],
            [17698, 27870],
            [17699, 29275],
            [17700, 25197],
            [17701, 38062],
            [17702, 32445],
            [17703, 33043],
            [17704, 27987],
            [17705, 20892],
            [17706, 24324],
            [17707, 22900],
            [17708, 21162],
            [17709, 24594],
            [17710, 22899],
            [17711, 26262],
            [17712, 34384],
            [17713, 30111],
            [17714, 25386],
            [17715, 25062],
            [17716, 31983],
            [17717, 35834],
            [17718, 21734],
            [17719, 27431],
            [17720, 40485],
            [17721, 27572],
            [17722, 34261],
            [17723, 21589],
            [17724, 20598],
            [17725, 27812],
            [17726, 21866],
            [17727, 36276],
            [17728, 29228],
            [17729, 24085],
            [17730, 24597],
            [17731, 29750],
            [17732, 25293],
            [17733, 25490],
            [17734, 29260],
            [17735, 24472],
            [17736, 28227],
            [17737, 27966],
            [17738, 25856],
            [17739, 28504],
            [17740, 30424],
            [17741, 30928],
            [17742, 30460],
            [17743, 30036],
            [17744, 21028],
            [17745, 21467],
            [17746, 20051],
            [17747, 24222],
            [17748, 26049],
            [17749, 32810],
            [17750, 32982],
            [17751, 25243],
            [17752, 21638],
            [17753, 21032],
            [17754, 28846],
            [17755, 34957],
            [17756, 36305],
            [17757, 27873],
            [17758, 21624],
            [17759, 32986],
            [17760, 22521],
            [17761, 35060],
            [17762, 36180],
            [17763, 38506],
            [17764, 37197],
            [17765, 20329],
            [17766, 27803],
            [17767, 21943],
            [17768, 30406],
            [17769, 30768],
            [17770, 25256],
            [17771, 28921],
            [17772, 28558],
            [17773, 24429],
            [17774, 34028],
            [17775, 26842],
            [17776, 30844],
            [17777, 31735],
            [17778, 33192],
            [17779, 26379],
            [17780, 40527],
            [17781, 25447],
            [17782, 30896],
            [17783, 22383],
            [17784, 30738],
            [17785, 38713],
            [17786, 25209],
            [17787, 25259],
            [17788, 21128],
            [17789, 29749],
            [17790, 27607],
            [17953, 21860],
            [17954, 33086],
            [17955, 30130],
            [17956, 30382],
            [17957, 21305],
            [17958, 30174],
            [17959, 20731],
            [17960, 23617],
            [17961, 35692],
            [17962, 31687],
            [17963, 20559],
            [17964, 29255],
            [17965, 39575],
            [17966, 39128],
            [17967, 28418],
            [17968, 29922],
            [17969, 31080],
            [17970, 25735],
            [17971, 30629],
            [17972, 25340],
            [17973, 39057],
            [17974, 36139],
            [17975, 21697],
            [17976, 32856],
            [17977, 20050],
            [17978, 22378],
            [17979, 33529],
            [17980, 33805],
            [17981, 24179],
            [17982, 20973],
            [17983, 29942],
            [17984, 35780],
            [17985, 23631],
            [17986, 22369],
            [17987, 27900],
            [17988, 39047],
            [17989, 23110],
            [17990, 30772],
            [17991, 39748],
            [17992, 36843],
            [17993, 31893],
            [17994, 21078],
            [17995, 25169],
            [17996, 38138],
            [17997, 20166],
            [17998, 33670],
            [17999, 33889],
            [18000, 33769],
            [18001, 33970],
            [18002, 22484],
            [18003, 26420],
            [18004, 22275],
            [18005, 26222],
            [18006, 28006],
            [18007, 35889],
            [18008, 26333],
            [18009, 28689],
            [18010, 26399],
            [18011, 27450],
            [18012, 26646],
            [18013, 25114],
            [18014, 22971],
            [18015, 19971],
            [18016, 20932],
            [18017, 28422],
            [18018, 26578],
            [18019, 27791],
            [18020, 20854],
            [18021, 26827],
            [18022, 22855],
            [18023, 27495],
            [18024, 30054],
            [18025, 23822],
            [18026, 33040],
            [18027, 40784],
            [18028, 26071],
            [18029, 31048],
            [18030, 31041],
            [18031, 39569],
            [18032, 36215],
            [18033, 23682],
            [18034, 20062],
            [18035, 20225],
            [18036, 21551],
            [18037, 22865],
            [18038, 30732],
            [18039, 22120],
            [18040, 27668],
            [18041, 36804],
            [18042, 24323],
            [18043, 27773],
            [18044, 27875],
            [18045, 35755],
            [18046, 25488],
            [18209, 24688],
            [18210, 27965],
            [18211, 29301],
            [18212, 25190],
            [18213, 38030],
            [18214, 38085],
            [18215, 21315],
            [18216, 36801],
            [18217, 31614],
            [18218, 20191],
            [18219, 35878],
            [18220, 20094],
            [18221, 40660],
            [18222, 38065],
            [18223, 38067],
            [18224, 21069],
            [18225, 28508],
            [18226, 36963],
            [18227, 27973],
            [18228, 35892],
            [18229, 22545],
            [18230, 23884],
            [18231, 27424],
            [18232, 27465],
            [18233, 26538],
            [18234, 21595],
            [18235, 33108],
            [18236, 32652],
            [18237, 22681],
            [18238, 34103],
            [18239, 24378],
            [18240, 25250],
            [18241, 27207],
            [18242, 38201],
            [18243, 25970],
            [18244, 24708],
            [18245, 26725],
            [18246, 30631],
            [18247, 20052],
            [18248, 20392],
            [18249, 24039],
            [18250, 38808],
            [18251, 25772],
            [18252, 32728],
            [18253, 23789],
            [18254, 20431],
            [18255, 31373],
            [18256, 20999],
            [18257, 33540],
            [18258, 19988],
            [18259, 24623],
            [18260, 31363],
            [18261, 38054],
            [18262, 20405],
            [18263, 20146],
            [18264, 31206],
            [18265, 29748],
            [18266, 21220],
            [18267, 33465],
            [18268, 25810],
            [18269, 31165],
            [18270, 23517],
            [18271, 27777],
            [18272, 38738],
            [18273, 36731],
            [18274, 27682],
            [18275, 20542],
            [18276, 21375],
            [18277, 28165],
            [18278, 25806],
            [18279, 26228],
            [18280, 27696],
            [18281, 24773],
            [18282, 39031],
            [18283, 35831],
            [18284, 24198],
            [18285, 29756],
            [18286, 31351],
            [18287, 31179],
            [18288, 19992],
            [18289, 37041],
            [18290, 29699],
            [18291, 27714],
            [18292, 22234],
            [18293, 37195],
            [18294, 27845],
            [18295, 36235],
            [18296, 21306],
            [18297, 34502],
            [18298, 26354],
            [18299, 36527],
            [18300, 23624],
            [18301, 39537],
            [18302, 28192],
            [18465, 21462],
            [18466, 23094],
            [18467, 40843],
            [18468, 36259],
            [18469, 21435],
            [18470, 22280],
            [18471, 39079],
            [18472, 26435],
            [18473, 37275],
            [18474, 27849],
            [18475, 20840],
            [18476, 30154],
            [18477, 25331],
            [18478, 29356],
            [18479, 21048],
            [18480, 21149],
            [18481, 32570],
            [18482, 28820],
            [18483, 30264],
            [18484, 21364],
            [18485, 40522],
            [18486, 27063],
            [18487, 30830],
            [18488, 38592],
            [18489, 35033],
            [18490, 32676],
            [18491, 28982],
            [18492, 29123],
            [18493, 20873],
            [18494, 26579],
            [18495, 29924],
            [18496, 22756],
            [18497, 25880],
            [18498, 22199],
            [18499, 35753],
            [18500, 39286],
            [18501, 25200],
            [18502, 32469],
            [18503, 24825],
            [18504, 28909],
            [18505, 22764],
            [18506, 20161],
            [18507, 20154],
            [18508, 24525],
            [18509, 38887],
            [18510, 20219],
            [18511, 35748],
            [18512, 20995],
            [18513, 22922],
            [18514, 32427],
            [18515, 25172],
            [18516, 20173],
            [18517, 26085],
            [18518, 25102],
            [18519, 33592],
            [18520, 33993],
            [18521, 33635],
            [18522, 34701],
            [18523, 29076],
            [18524, 28342],
            [18525, 23481],
            [18526, 32466],
            [18527, 20887],
            [18528, 25545],
            [18529, 26580],
            [18530, 32905],
            [18531, 33593],
            [18532, 34837],
            [18533, 20754],
            [18534, 23418],
            [18535, 22914],
            [18536, 36785],
            [18537, 20083],
            [18538, 27741],
            [18539, 20837],
            [18540, 35109],
            [18541, 36719],
            [18542, 38446],
            [18543, 34122],
            [18544, 29790],
            [18545, 38160],
            [18546, 38384],
            [18547, 28070],
            [18548, 33509],
            [18549, 24369],
            [18550, 25746],
            [18551, 27922],
            [18552, 33832],
            [18553, 33134],
            [18554, 40131],
            [18555, 22622],
            [18556, 36187],
            [18557, 19977],
            [18558, 21441],
            [18721, 20254],
            [18722, 25955],
            [18723, 26705],
            [18724, 21971],
            [18725, 20007],
            [18726, 25620],
            [18727, 39578],
            [18728, 25195],
            [18729, 23234],
            [18730, 29791],
            [18731, 33394],
            [18732, 28073],
            [18733, 26862],
            [18734, 20711],
            [18735, 33678],
            [18736, 30722],
            [18737, 26432],
            [18738, 21049],
            [18739, 27801],
            [18740, 32433],
            [18741, 20667],
            [18742, 21861],
            [18743, 29022],
            [18744, 31579],
            [18745, 26194],
            [18746, 29642],
            [18747, 33515],
            [18748, 26441],
            [18749, 23665],
            [18750, 21024],
            [18751, 29053],
            [18752, 34923],
            [18753, 38378],
            [18754, 38485],
            [18755, 25797],
            [18756, 36193],
            [18757, 33203],
            [18758, 21892],
            [18759, 27733],
            [18760, 25159],
            [18761, 32558],
            [18762, 22674],
            [18763, 20260],
            [18764, 21830],
            [18765, 36175],
            [18766, 26188],
            [18767, 19978],
            [18768, 23578],
            [18769, 35059],
            [18770, 26786],
            [18771, 25422],
            [18772, 31245],
            [18773, 28903],
            [18774, 33421],
            [18775, 21242],
            [18776, 38902],
            [18777, 23569],
            [18778, 21736],
            [18779, 37045],
            [18780, 32461],
            [18781, 22882],
            [18782, 36170],
            [18783, 34503],
            [18784, 18785, 33292],
            [18786, 36198],
            [18787, 25668],
            [18788, 23556],
            [18789, 24913],
            [18790, 28041],
            [18791, 31038],
            [18792, 35774],
            [18793, 30775],
            [18794, 30003],
            [18795, 21627],
            [18796, 20280],
            [18797, 36523],
            [18798, 28145],
            [18799, 23072],
            [18800, 32453],
            [18801, 31070],
            [18802, 27784],
            [18803, 23457],
            [18804, 23158],
            [18805, 29978],
            [18806, 32958],
            [18807, 24910],
            [18808, 28183],
            [18809, 22768],
            [18810, 29983],
            [18811, 29989],
            [18812, 29298],
            [18813, 21319],
            [18814, 32499],
            [18977, 30465],
            [18978, 30427],
            [18979, 21097],
            [18980, 32988],
            [18981, 22307],
            [18982, 24072],
            [18983, 22833],
            [18984, 29422],
            [18985, 26045],
            [18986, 28287],
            [18987, 35799],
            [18988, 23608],
            [18989, 34417],
            [18990, 21313],
            [18991, 30707],
            [18992, 25342],
            [18993, 26102],
            [18994, 20160],
            [18995, 39135],
            [18996, 34432],
            [18997, 23454],
            [18998, 35782],
            [18999, 21490],
            [19000, 30690],
            [19001, 20351],
            [19002, 23630],
            [19003, 39542],
            [19004, 22987],
            [19005, 24335],
            [19006, 31034],
            [19007, 22763],
            [19008, 19990],
            [19009, 26623],
            [19010, 20107],
            [19011, 25325],
            [19012, 35475],
            [19013, 36893],
            [19014, 21183],
            [19015, 26159],
            [19016, 21980],
            [19017, 22124],
            [19018, 36866],
            [19019, 20181],
            [19020, 20365],
            [19021, 37322],
            [19022, 39280],
            [19023, 27663],
            [19024, 24066],
            [19025, 24643],
            [19026, 23460],
            [19027, 35270],
            [19028, 35797],
            [19029, 25910],
            [19030, 25163],
            [19031, 39318],
            [19032, 23432],
            [19033, 23551],
            [19034, 25480],
            [19035, 21806],
            [19036, 21463],
            [19037, 30246],
            [19038, 20861],
            [19039, 34092],
            [19040, 26530],
            [19041, 26803],
            [19042, 27530],
            [19043, 25234],
            [19044, 36755],
            [19045, 21460],
            [19046, 33298],
            [19047, 28113],
            [19048, 30095],
            [19049, 20070],
            [19050, 36174],
            [19051, 23408],
            [19052, 29087],
            [19053, 34223],
            [19054, 26257],
            [19055, 26329],
            [19056, 32626],
            [19057, 34560],
            [19058, 40653],
            [19059, 40736],
            [19060, 23646],
            [19061, 26415],
            [19062, 36848],
            [19063, 26641],
            [19064, 26463],
            [19065, 25101],
            [19066, 31446],
            [19067, 22661],
            [19068, 24246],
            [19069, 25968],
            [19070, 28465],
            [19233, 24661],
            [19234, 21047],
            [19235, 32781],
            [19236, 25684],
            [19237, 34928],
            [19238, 29993],
            [19239, 24069],
            [19240, 26643],
            [19241, 25332],
            [19242, 38684],
            [19243, 21452],
            [19244, 29245],
            [19245, 35841],
            [19246, 27700],
            [19247, 30561],
            [19248, 31246],
            [19249, 21550],
            [19250, 30636],
            [19251, 39034],
            [19252, 33308],
            [19253, 35828],
            [19254, 30805],
            [19255, 26388],
            [19256, 28865],
            [19257, 26031],
            [19258, 25749],
            [19259, 22070],
            [19260, 24605],
            [19261, 31169],
            [19262, 21496],
            [19263, 19997],
            [19264, 27515],
            [19265, 32902],
            [19266, 23546],
            [19267, 21987],
            [19268, 22235],
            [19269, 20282],
            [19270, 20284],
            [19271, 39282],
            [19272, 24051],
            [19273, 26494],
            [19274, 32824],
            [19275, 24578],
            [19276, 39042],
            [19277, 36865],
            [19278, 23435],
            [19279, 35772],
            [19280, 35829],
            [19281, 25628],
            [19282, 33368],
            [19283, 25822],
            [19284, 22013],
            [19285, 33487],
            [19286, 37221],
            [19287, 20439],
            [19288, 32032],
            [19289, 36895],
            [19290, 31903],
            [19291, 20723],
            [19292, 22609],
            [19293, 28335],
            [19294, 23487],
            [19295, 35785],
            [19296, 32899],
            [19297, 37240],
            [19298, 33948],
            [19299, 31639],
            [19300, 34429],
            [19301, 38539],
            [19302, 38543],
            [19303, 32485],
            [19304, 39635],
            [19305, 30862],
            [19306, 23681],
            [19307, 31319],
            [19308, 36930],
            [19309, 38567],
            [19310, 31071],
            [19311, 23385],
            [19312, 25439],
            [19313, 31499],
            [19314, 34001],
            [19315, 26797],
            [19316, 21766],
            [19317, 32553],
            [19318, 29712],
            [19319, 32034],
            [19320, 38145],
            [19321, 25152],
            [19322, 22604],
            [19323, 20182],
            [19324, 23427],
            [19325, 22905],
            [19326, 22612],
            [19489, 29549],
            [19490, 25374],
            [19491, 36427],
            [19492, 36367],
            [19493, 32974],
            [19494, 33492],
            [19495, 25260],
            [19496, 21488],
            [19497, 27888],
            [19498, 37214],
            [19499, 22826],
            [19500, 24577],
            [19501, 27760],
            [19502, 22349],
            [19503, 25674],
            [19504, 36138],
            [19505, 30251],
            [19506, 28393],
            [19507, 22363],
            [19508, 27264],
            [19509, 30192],
            [19510, 28525],
            [19511, 35885],
            [19512, 35848],
            [19513, 22374],
            [19514, 27631],
            [19515, 34962],
            [19516, 30899],
            [19517, 25506],
            [19518, 21497],
            [19519, 28845],
            [19520, 27748],
            [19521, 22616],
            [19522, 25642],
            [19523, 22530],
            [19524, 26848],
            [19525, 33179],
            [19526, 21776],
            [19527, 31958],
            [19528, 20504],
            [19529, 36538],
            [19530, 28108],
            [19531, 36255],
            [19532, 28907],
            [19533, 25487],
            [19534, 28059],
            [19535, 28372],
            [19536, 32486],
            [19537, 33796],
            [19538, 26691],
            [19539, 36867],
            [19540, 28120],
            [19541, 38518],
            [19542, 35752],
            [19543, 22871],
            [19544, 29305],
            [19545, 34276],
            [19546, 33150],
            [19547, 30140],
            [19548, 35466],
            [19549, 26799],
            [19550, 21076],
            [19551, 36386],
            [19552, 38161],
            [19553, 25552],
            [19554, 39064],
            [19555, 36420],
            [19556, 21884],
            [19557, 20307],
            [19558, 26367],
            [19559, 22159],
            [19560, 24789],
            [19561, 28053],
            [19562, 21059],
            [19563, 23625],
            [19564, 22825],
            [19565, 28155],
            [19566, 22635],
            [19567, 30000],
            [19568, 29980],
            [19569, 24684],
            [19570, 33300],
            [19571, 33094],
            [19572, 25361],
            [19573, 26465],
            [19574, 36834],
            [19575, 30522],
            [19576, 36339],
            [19577, 36148],
            [19578, 38081],
            [19579, 24086],
            [19580, 21381],
            [19581, 21548],
            [19582, 28867],
            [19745, 27712],
            [19746, 24311],
            [19747, 20572],
            [19748, 20141],
            [19749, 24237],
            [19750, 25402],
            [19751, 33351],
            [19752, 36890],
            [19753, 26704],
            [19754, 37230],
            [19755, 30643],
            [19756, 21516],
            [19757, 38108],
            [19758, 24420],
            [19759, 31461],
            [19760, 26742],
            [19761, 25413],
            [19762, 31570],
            [19763, 32479],
            [19764, 30171],
            [19765, 20599],
            [19766, 25237],
            [19767, 22836],
            [19768, 36879],
            [19769, 20984],
            [19770, 31171],
            [19771, 31361],
            [19772, 22270],
            [19773, 24466],
            [19774, 36884],
            [19775, 28034],
            [19776, 23648],
            [19777, 22303],
            [19778, 21520],
            [19779, 20820],
            [19780, 28237],
            [19781, 22242],
            [19782, 25512],
            [19783, 39059],
            [19784, 33151],
            [19785, 34581],
            [19786, 35114],
            [19787, 36864],
            [19788, 21534],
            [19789, 23663],
            [19790, 33216],
            [19791, 25302],
            [19792, 25176],
            [19793, 33073],
            [19794, 40501],
            [19795, 38464],
            [19796, 39534],
            [19797, 39548],
            [19798, 26925],
            [19799, 22949],
            [19800, 25299],
            [19801, 21822],
            [19802, 25366],
            [19803, 21703],
            [19804, 34521],
            [19805, 27964],
            [19806, 23043],
            [19807, 29926],
            [19808, 34972],
            [19809, 27498],
            [19810, 22806],
            [19811, 35916],
            [19812, 24367],
            [19813, 28286],
            [19814, 29609],
            [19815, 39037],
            [19816, 20024],
            [19817, 28919],
            [19818, 23436],
            [19819, 30871],
            [19820, 25405],
            [19821, 26202],
            [19822, 30358],
            [19823, 24779],
            [19824, 23451],
            [19825, 23113],
            [19826, 19975],
            [19827, 33109],
            [19828, 27754],
            [19829, 29579],
            [19830, 20129],
            [19831, 26505],
            [19832, 32593],
            [19833, 24448],
            [19834, 26106],
            [19835, 26395],
            [19836, 24536],
            [19837, 22916],
            [19838, 23041],
            [20001, 24013],
            [20002, 24494],
            [20003, 21361],
            [20004, 38886],
            [20005, 36829],
            [20006, 26693],
            [20007, 22260],
            [20008, 21807],
            [20009, 24799],
            [20010, 20026],
            [20011, 28493],
            [20012, 32500],
            [20013, 33479],
            [20014, 33806],
            [20015, 22996],
            [20016, 20255],
            [20017, 20266],
            [20018, 23614],
            [20019, 32428],
            [20020, 26410],
            [20021, 34074],
            [20022, 21619],
            [20023, 30031],
            [20024, 32963],
            [20025, 21890],
            [20026, 39759],
            [20027, 20301],
            [20028, 28205],
            [20029, 35859],
            [20030, 23561],
            [20031, 24944],
            [20032, 21355],
            [20033, 30239],
            [20034, 28201],
            [20035, 34442],
            [20036, 25991],
            [20037, 38395],
            [20038, 32441],
            [20039, 21563],
            [20040, 31283],
            [20041, 32010],
            [20042, 38382],
            [20043, 21985],
            [20044, 32705],
            [20045, 29934],
            [20046, 25373],
            [20047, 34583],
            [20048, 28065],
            [20049, 31389],
            [20050, 25105],
            [20051, 26017],
            [20052, 21351],
            [20053, 25569],
            [20054, 27779],
            [20055, 24043],
            [20056, 21596],
            [20057, 38056],
            [20058, 20044],
            [20059, 27745],
            [20060, 35820],
            [20061, 23627],
            [20062, 26080],
            [20063, 33436],
            [20064, 26791],
            [20065, 21566],
            [20066, 21556],
            [20067, 27595],
            [20068, 27494],
            [20069, 20116],
            [20070, 25410],
            [20071, 21320],
            [20072, 33310],
            [20073, 20237],
            [20074, 20398],
            [20075, 22366],
            [20076, 25098],
            [20077, 38654],
            [20078, 26212],
            [20079, 29289],
            [20080, 21247],
            [20081, 21153],
            [20082, 24735],
            [20083, 35823],
            [20084, 26132],
            [20085, 29081],
            [20086, 26512],
            [20087, 35199],
            [20088, 30802],
            [20089, 30717],
            [20090, 26224],
            [20091, 22075],
            [20092, 21560],
            [20093, 38177],
            [20094, 29306],
            [20257, 31232],
            [20258, 24687],
            [20259, 24076],
            [20260, 24713],
            [20261, 33181],
            [20262, 22805],
            [20263, 24796],
            [20264, 29060],
            [20265, 28911],
            [20266, 28330],
            [20267, 27728],
            [20268, 29312],
            [20269, 27268],
            [20270, 34989],
            [20271, 24109],
            [20272, 20064],
            [20273, 23219],
            [20274, 21916],
            [20275, 38115],
            [20276, 27927],
            [20277, 31995],
            [20278, 38553],
            [20279, 25103],
            [20280, 32454],
            [20281, 30606],
            [20282, 34430],
            [20283, 21283],
            [20284, 38686],
            [20285, 36758],
            [20286, 26247],
            [20287, 23777],
            [20288, 20384],
            [20289, 29421],
            [20290, 19979],
            [20291, 21414],
            [20292, 22799],
            [20293, 21523],
            [20294, 25472],
            [20295, 38184],
            [20296, 20808],
            [20297, 20185],
            [20298, 40092],
            [20299, 32420],
            [20300, 21688],
            [20301, 36132],
            [20302, 34900],
            [20303, 33335],
            [20304, 38386],
            [20305, 28046],
            [20306, 24358],
            [20307, 23244],
            [20308, 26174],
            [20309, 38505],
            [20310, 29616],
            [20311, 29486],
            [20312, 21439],
            [20313, 33146],
            [20314, 39301],
            [20315, 32673],
            [20316, 23466],
            [20317, 38519],
            [20318, 38480],
            [20319, 32447],
            [20320, 30456],
            [20321, 21410],
            [20322, 38262],
            [20323, 39321],
            [20324, 31665],
            [20325, 35140],
            [20326, 28248],
            [20327, 20065],
            [20328, 32724],
            [20329, 31077],
            [20330, 35814],
            [20331, 24819],
            [20332, 21709],
            [20333, 20139],
            [20334, 39033],
            [20335, 24055],
            [20336, 27233],
            [20337, 20687],
            [20338, 21521],
            [20339, 35937],
            [20340, 33831],
            [20341, 30813],
            [20342, 38660],
            [20343, 21066],
            [20344, 21742],
            [20345, 22179],
            [20346, 38144],
            [20347, 28040],
            [20348, 23477],
            [20349, 28102],
            [20350, 26195],
            [20513, 23567],
            [20514, 23389],
            [20515, 26657],
            [20516, 32918],
            [20517, 21880],
            [20518, 31505],
            [20519, 25928],
            [20520, 26964],
            [20521, 20123],
            [20522, 27463],
            [20523, 34638],
            [20524, 38795],
            [20525, 21327],
            [20526, 25375],
            [20527, 25658],
            [20528, 37034],
            [20529, 26012],
            [20530, 32961],
            [20531, 35856],
            [20532, 20889],
            [20533, 26800],
            [20534, 21368],
            [20535, 34809],
            [20536, 25032],
            [20537, 27844],
            [20538, 27899],
            [20539, 35874],
            [20540, 23633],
            [20541, 34218],
            [20542, 33455],
            [20543, 38156],
            [20544, 27427],
            [20545, 36763],
            [20546, 26032],
            [20547, 24571],
            [20548, 24515],
            [20549, 20449],
            [20550, 34885],
            [20551, 26143],
            [20552, 33125],
            [20553, 29481],
            [20554, 24826],
            [20555, 20852],
            [20556, 21009],
            [20557, 22411],
            [20558, 24418],
            [20559, 37026],
            [20560, 34892],
            [20561, 37266],
            [20562, 24184],
            [20563, 26447],
            [20564, 24615],
            [20565, 22995],
            [20566, 20804],
            [20567, 20982],
            [20568, 33016],
            [20569, 21256],
            [20570, 27769],
            [20571, 38596],
            [20572, 29066],
            [20573, 20241],
            [20574, 20462],
            [20575, 32670],
            [20576, 26429],
            [20577, 21957],
            [20578, 38152],
            [20579, 31168],
            [20580, 34966],
            [20581, 32483],
            [20582, 22687],
            [20583, 25100],
            [20584, 38656],
            [20585, 34394],
            [20586, 22040],
            [20587, 39035],
            [20588, 24464],
            [20589, 35768],
            [20590, 33988],
            [20591, 37207],
            [20592, 21465],
            [20593, 26093],
            [20594, 24207],
            [20595, 30044],
            [20596, 24676],
            [20597, 32110],
            [20598, 23167],
            [20599, 32490],
            [20600, 32493],
            [20601, 36713],
            [20602, 21927],
            [20603, 23459],
            [20604, 24748],
            [20605, 26059],
            [20606, 29572],
            [20769, 36873],
            [20770, 30307],
            [20771, 30505],
            [20772, 32474],
            [20773, 38772],
            [20774, 34203],
            [20775, 23398],
            [20776, 31348],
            [20777, 38634],
            [20778, 34880],
            [20779, 21195],
            [20780, 29071],
            [20781, 24490],
            [20782, 26092],
            [20783, 35810],
            [20784, 23547],
            [20785, 39535],
            [20786, 24033],
            [20787, 27529],
            [20788, 27739],
            [20789, 35757],
            [20790, 35759],
            [20791, 36874],
            [20792, 36805],
            [20793, 21387],
            [20794, 25276],
            [20795, 40486],
            [20796, 40493],
            [20797, 21568],
            [20798, 20011],
            [20799, 33469],
            [20800, 29273],
            [20801, 34460],
            [20802, 23830],
            [20803, 34905],
            [20804, 28079],
            [20805, 38597],
            [20806, 21713],
            [20807, 20122],
            [20808, 35766],
            [20809, 28937],
            [20810, 21693],
            [20811, 38409],
            [20812, 28895],
            [20813, 28153],
            [20814, 30416],
            [20815, 20005],
            [20816, 30740],
            [20817, 34578],
            [20818, 23721],
            [20819, 24310],
            [20820, 35328],
            [20821, 39068],
            [20822, 38414],
            [20823, 28814],
            [20824, 27839],
            [20825, 22852],
            [20826, 25513],
            [20827, 30524],
            [20828, 34893],
            [20829, 28436],
            [20830, 33395],
            [20831, 22576],
            [20832, 29141],
            [20833, 21388],
            [20834, 30746],
            [20835, 38593],
            [20836, 21761],
            [20837, 24422],
            [20838, 28976],
            [20839, 23476],
            [20840, 35866],
            [20841, 39564],
            [20842, 27523],
            [20843, 22830],
            [20844, 40495],
            [20845, 31207],
            [20846, 26472],
            [20847, 25196],
            [20848, 20335],
            [20849, 30113],
            [20850, 32650],
            [20851, 27915],
            [20852, 38451],
            [20853, 27687],
            [20854, 20208],
            [20855, 30162],
            [20856, 20859],
            [20857, 26679],
            [20858, 28478],
            [20859, 36992],
            [20860, 33136],
            [20861, 22934],
            [20862, 29814],
            [21025, 25671],
            [21026, 23591],
            [21027, 36965],
            [21028, 31377],
            [21029, 35875],
            [21030, 23002],
            [21031, 21676],
            [21032, 33280],
            [21033, 33647],
            [21034, 35201],
            [21035, 32768],
            [21036, 26928],
            [21037, 22094],
            [21038, 32822],
            [21039, 29239],
            [21040, 37326],
            [21041, 20918],
            [21042, 20063],
            [21043, 39029],
            [21044, 25494],
            [21045, 19994],
            [21046, 21494],
            [21047, 26355],
            [21048, 33099],
            [21049, 22812],
            [21050, 28082],
            [21051, 19968],
            [21052, 22777],
            [21053, 21307],
            [21054, 25558],
            [21055, 38129],
            [21056, 20381],
            [21057, 20234],
            [21058, 34915],
            [21059, 39056],
            [21060, 22839],
            [21061, 36951],
            [21062, 31227],
            [21063, 20202],
            [21064, 33008],
            [21065, 30097],
            [21066, 27778],
            [21067, 23452],
            [21068, 23016],
            [21069, 24413],
            [21070, 26885],
            [21071, 34433],
            [21072, 20506],
            [21073, 24050],
            [21074, 20057],
            [21075, 30691],
            [21076, 20197],
            [21077, 33402],
            [21078, 25233],
            [21079, 26131],
            [21080, 37009],
            [21081, 23673],
            [21082, 20159],
            [21083, 24441],
            [21084, 33222],
            [21085, 36920],
            [21086, 32900],
            [21087, 30123],
            [21088, 20134],
            [21089, 35028],
            [21090, 24847],
            [21091, 27589],
            [21092, 24518],
            [21093, 20041],
            [21094, 30410],
            [21095, 28322],
            [21096, 35811],
            [21097, 35758],
            [21098, 35850],
            [21099, 35793],
            [21100, 24322],
            [21101, 32764],
            [21102, 32716],
            [21103, 32462],
            [21104, 33589],
            [21105, 33643],
            [21106, 22240],
            [21107, 27575],
            [21108, 38899],
            [21109, 38452],
            [21110, 23035],
            [21111, 21535],
            [21112, 38134],
            [21113, 28139],
            [21114, 23493],
            [21115, 39278],
            [21116, 23609],
            [21117, 24341],
            [21118, 38544],
            [21281, 21360],
            [21282, 33521],
            [21283, 27185],
            [21284, 23156],
            [21285, 40560],
            [21286, 24212],
            [21287, 32552],
            [21288, 33721],
            [21289, 21290, 33828],
            [21291, 33639],
            [21292, 34631],
            [21293, 36814],
            [21294, 36194],
            [21295, 30408],
            [21296, 24433],
            [21297, 39062],
            [21298, 30828],
            [21299, 26144],
            [21300, 21727],
            [21301, 25317],
            [21302, 20323],
            [21303, 33219],
            [21304, 30152],
            [21305, 24248],
            [21306, 38605],
            [21307, 36362],
            [21308, 34553],
            [21309, 21647],
            [21310, 27891],
            [21311, 28044],
            [21312, 27704],
            [21313, 24703],
            [21314, 21191],
            [21315, 29992],
            [21316, 24189],
            [21317, 20248],
            [21318, 24736],
            [21319, 24551],
            [21320, 23588],
            [21321, 30001],
            [21322, 37038],
            [21323, 38080],
            [21324, 29369],
            [21325, 27833],
            [21326, 28216],
            [21327, 37193],
            [21328, 26377],
            [21329, 21451],
            [21330, 21491],
            [21331, 20305],
            [21332, 37321],
            [21333, 35825],
            [21334, 21448],
            [21335, 24188],
            [21336, 36802],
            [21337, 28132],
            [21338, 20110],
            [21339, 30402],
            [21340, 27014],
            [21341, 34398],
            [21342, 24858],
            [21343, 33286],
            [21344, 20313],
            [21345, 20446],
            [21346, 36926],
            [21347, 40060],
            [21348, 24841],
            [21349, 28189],
            [21350, 28180],
            [21351, 38533],
            [21352, 20104],
            [21353, 23089],
            [21354, 38632],
            [21355, 19982],
            [21356, 23679],
            [21357, 31161],
            [21358, 23431],
            [21359, 35821],
            [21360, 32701],
            [21361, 29577],
            [21362, 22495],
            [21363, 33419],
            [21364, 37057],
            [21365, 21505],
            [21366, 36935],
            [21367, 21947],
            [21368, 23786],
            [21369, 24481],
            [21370, 24840],
            [21371, 27442],
            [21372, 29425],
            [21373, 32946],
            [21374, 35465],
            [21537, 28020],
            [21538, 23507],
            [21539, 35029],
            [21540, 39044],
            [21541, 35947],
            [21542, 39533],
            [21543, 40499],
            [21544, 28170],
            [21545, 20900],
            [21546, 20803],
            [21547, 22435],
            [21548, 34945],
            [21549, 21407],
            [21550, 25588],
            [21551, 36757],
            [21552, 22253],
            [21553, 21592],
            [21554, 22278],
            [21555, 29503],
            [21556, 28304],
            [21557, 32536],
            [21558, 36828],
            [21559, 33489],
            [21560, 24895],
            [21561, 24616],
            [21562, 38498],
            [21563, 26352],
            [21564, 32422],
            [21565, 36234],
            [21566, 36291],
            [21567, 38053],
            [21568, 23731],
            [21569, 31908],
            [21570, 26376],
            [21571, 24742],
            [21572, 38405],
            [21573, 32792],
            [21574, 20113],
            [21575, 37095],
            [21576, 21248],
            [21577, 38504],
            [21578, 20801],
            [21579, 36816],
            [21580, 34164],
            [21581, 37213],
            [21582, 26197],
            [21583, 38901],
            [21584, 23381],
            [21585, 21277],
            [21586, 30776],
            [21587, 26434],
            [21588, 26685],
            [21589, 21705],
            [21590, 28798],
            [21591, 23472],
            [21592, 36733],
            [21593, 20877],
            [21594, 22312],
            [21595, 21681],
            [21596, 25874],
            [21597, 26242],
            [21598, 36190],
            [21599, 36163],
            [21600, 33039],
            [21601, 33900],
            [21602, 36973],
            [21603, 31967],
            [21604, 20991],
            [21605, 34299],
            [21606, 26531],
            [21607, 26089],
            [21608, 28577],
            [21609, 34468],
            [21610, 36481],
            [21611, 22122],
            [21612, 36896],
            [21613, 30338],
            [21614, 28790],
            [21615, 29157],
            [21616, 36131],
            [21617, 25321],
            [21618, 21017],
            [21619, 27901],
            [21620, 36156],
            [21621, 24590],
            [21622, 22686],
            [21623, 24974],
            [21624, 26366],
            [21625, 36192],
            [21626, 25166],
            [21627, 21939],
            [21628, 28195],
            [21629, 26413],
            [21630, 36711],
            [21793, 38113],
            [21794, 38392],
            [21795, 30504],
            [21796, 26629],
            [21797, 27048],
            [21798, 21643],
            [21799, 20045],
            [21800, 28856],
            [21801, 35784],
            [21802, 25688],
            [21803, 25995],
            [21804, 23429],
            [21805, 31364],
            [21806, 20538],
            [21807, 23528],
            [21808, 30651],
            [21809, 27617],
            [21810, 35449],
            [21811, 31896],
            [21812, 27838],
            [21813, 30415],
            [21814, 26025],
            [21815, 36759],
            [21816, 23853],
            [21817, 23637],
            [21818, 34360],
            [21819, 26632],
            [21820, 21344],
            [21821, 25112],
            [21822, 31449],
            [21823, 28251],
            [21824, 32509],
            [21825, 27167],
            [21826, 31456],
            [21827, 24432],
            [21828, 28467],
            [21829, 24352],
            [21830, 25484],
            [21831, 28072],
            [21832, 26454],
            [21833, 19976],
            [21834, 24080],
            [21835, 36134],
            [21836, 20183],
            [21837, 32960],
            [21838, 30260],
            [21839, 38556],
            [21840, 25307],
            [21841, 26157],
            [21842, 25214],
            [21843, 27836],
            [21844, 36213],
            [21845, 29031],
            [21846, 32617],
            [21847, 20806],
            [21848, 32903],
            [21849, 21484],
            [21850, 36974],
            [21851, 25240],
            [21852, 21746],
            [21853, 34544],
            [21854, 36761],
            [21855, 32773],
            [21856, 38167],
            [21857, 34071],
            [21858, 36825],
            [21859, 27993],
            [21860, 29645],
            [21861, 26015],
            [21862, 30495],
            [21863, 29956],
            [21864, 30759],
            [21865, 33275],
            [21866, 36126],
            [21867, 38024],
            [21868, 20390],
            [21869, 26517],
            [21870, 30137],
            [21871, 35786],
            [21872, 38663],
            [21873, 25391],
            [21874, 38215],
            [21875, 38453],
            [21876, 33976],
            [21877, 25379],
            [21878, 30529],
            [21879, 24449],
            [21880, 29424],
            [21881, 20105],
            [21882, 24596],
            [21883, 25972],
            [21884, 25327],
            [21885, 27491],
            [21886, 25919],
            [22049, 24103],
            [22050, 30151],
            [22051, 37073],
            [22052, 35777],
            [22053, 33437],
            [22054, 26525],
            [22055, 25903],
            [22056, 21553],
            [22057, 34584],
            [22058, 30693],
            [22059, 32930],
            [22060, 33026],
            [22061, 27713],
            [22062, 20043],
            [22063, 32455],
            [22064, 32844],
            [22065, 30452],
            [22066, 26893],
            [22067, 27542],
            [22068, 25191],
            [22069, 20540],
            [22070, 20356],
            [22071, 22336],
            [22072, 25351],
            [22073, 27490],
            [22074, 36286],
            [22075, 21482],
            [22076, 26088],
            [22077, 32440],
            [22078, 24535],
            [22079, 25370],
            [22080, 25527],
            [22081, 22082, 33267],
            [22083, 32622],
            [22084, 24092],
            [22085, 23769],
            [22086, 21046],
            [22087, 26234],
            [22088, 31209],
            [22089, 31258],
            [22090, 36136],
            [22091, 28825],
            [22092, 30164],
            [22093, 28382],
            [22094, 27835],
            [22095, 31378],
            [22096, 20013],
            [22097, 30405],
            [22098, 24544],
            [22099, 38047],
            [22100, 34935],
            [22101, 32456],
            [22102, 31181],
            [22103, 32959],
            [22104, 37325],
            [22105, 20210],
            [22106, 20247],
            [22107, 33311],
            [22108, 21608],
            [22109, 24030],
            [22110, 27954],
            [22111, 35788],
            [22112, 31909],
            [22113, 36724],
            [22114, 32920],
            [22115, 24090],
            [22116, 21650],
            [22117, 30385],
            [22118, 23449],
            [22119, 26172],
            [22120, 39588],
            [22121, 29664],
            [22122, 26666],
            [22123, 34523],
            [22124, 26417],
            [22125, 29482],
            [22126, 35832],
            [22127, 35803],
            [22128, 36880],
            [22129, 31481],
            [22130, 28891],
            [22131, 29038],
            [22132, 25284],
            [22133, 30633],
            [22134, 22065],
            [22135, 20027],
            [22136, 33879],
            [22137, 26609],
            [22138, 21161],
            [22139, 34496],
            [22140, 36142],
            [22141, 38136],
            [22142, 31569],
            [22305, 20303],
            [22306, 27880],
            [22307, 31069],
            [22308, 39547],
            [22309, 25235],
            [22310, 29226],
            [22311, 25341],
            [22312, 19987],
            [22313, 30742],
            [22314, 36716],
            [22315, 25776],
            [22316, 36186],
            [22317, 31686],
            [22318, 26729],
            [22319, 24196],
            [22320, 35013],
            [22321, 22918],
            [22322, 25758],
            [22323, 22766],
            [22324, 29366],
            [22325, 26894],
            [22326, 38181],
            [22327, 36861],
            [22328, 36184],
            [22329, 22368],
            [22330, 32512],
            [22331, 35846],
            [22332, 20934],
            [22333, 25417],
            [22334, 25305],
            [22335, 21331],
            [22336, 26700],
            [22337, 29730],
            [22338, 33537],
            [22339, 37196],
            [22340, 21828],
            [22341, 30528],
            [22342, 28796],
            [22343, 27978],
            [22344, 20857],
            [22345, 21672],
            [22346, 36164],
            [22347, 23039],
            [22348, 28363],
            [22349, 28100],
            [22350, 23388],
            [22351, 32043],
            [22352, 20180],
            [22353, 31869],
            [22354, 28371],
            [22355, 23376],
            [22356, 33258],
            [22357, 28173],
            [22358, 23383],
            [22359, 39683],
            [22360, 26837],
            [22361, 36394],
            [22362, 23447],
            [22363, 32508],
            [22364, 24635],
            [22365, 32437],
            [22366, 37049],
            [22367, 36208],
            [22368, 22863],
            [22369, 25549],
            [22370, 31199],
            [22371, 36275],
            [22372, 21330],
            [22373, 26063],
            [22374, 31062],
            [22375, 35781],
            [22376, 38459],
            [22377, 32452],
            [22378, 38075],
            [22379, 32386],
            [22380, 22068],
            [22381, 37257],
            [22382, 26368],
            [22383, 32618],
            [22384, 23562],
            [22385, 36981],
            [22386, 26152],
            [22387, 24038],
            [22388, 20304],
            [22389, 26590],
            [22390, 20570],
            [22391, 20316],
            [22392, 22352],
            [22393, 24231],
            [22561, 20109],
            [22562, 19980],
            [22563, 20800],
            [22564, 19984],
            [22565, 24319],
            [22566, 21317],
            [22567, 19989],
            [22568, 20120],
            [22569, 19998],
            [22570, 39730],
            [22571, 23404],
            [22572, 22121],
            [22573, 20008],
            [22574, 31162],
            [22575, 20031],
            [22576, 21269],
            [22577, 20039],
            [22578, 22829],
            [22579, 29243],
            [22580, 21358],
            [22581, 27664],
            [22582, 22239],
            [22583, 32996],
            [22584, 39319],
            [22585, 27603],
            [22586, 30590],
            [22587, 40727],
            [22588, 20022],
            [22589, 20127],
            [22590, 40720],
            [22591, 20060],
            [22592, 20073],
            [22593, 20115],
            [22594, 33416],
            [22595, 23387],
            [22596, 21868],
            [22597, 22031],
            [22598, 20164],
            [22599, 21389],
            [22600, 21405],
            [22601, 21411],
            [22602, 21413],
            [22603, 21422],
            [22604, 38757],
            [22605, 36189],
            [22606, 21274],
            [22607, 21493],
            [22608, 21286],
            [22609, 21294],
            [22610, 21310],
            [22611, 36188],
            [22612, 21350],
            [22613, 21347],
            [22614, 20994],
            [22615, 21000],
            [22616, 21006],
            [22617, 21037],
            [22618, 21043],
            [22619, 22620, 21055],
            [22621, 21068],
            [22622, 21086],
            [22623, 21089],
            [22624, 21084],
            [22625, 33967],
            [22626, 21117],
            [22627, 21122],
            [22628, 21121],
            [22629, 21136],
            [22630, 21139],
            [22631, 20866],
            [22632, 32596],
            [22633, 20155],
            [22634, 20163],
            [22635, 20169],
            [22636, 20162],
            [22637, 20200],
            [22638, 20193],
            [22639, 20203],
            [22640, 20190],
            [22641, 20251],
            [22642, 20211],
            [22643, 20258],
            [22644, 20324],
            [22645, 20213],
            [22646, 20261],
            [22647, 20263],
            [22648, 20233],
            [22649, 20267],
            [22650, 20318],
            [22651, 20327],
            [22652, 25912],
            [22653, 20314],
            [22654, 20317],
            [22817, 20319],
            [22818, 20311],
            [22819, 20274],
            [22820, 20285],
            [22821, 20342],
            [22822, 20340],
            [22823, 20369],
            [22824, 20361],
            [22825, 20355],
            [22826, 20367],
            [22827, 20350],
            [22828, 20347],
            [22829, 20394],
            [22830, 20348],
            [22831, 20396],
            [22832, 20372],
            [22833, 20454],
            [22834, 20456],
            [22835, 20458],
            [22836, 20421],
            [22837, 20442],
            [22838, 20451],
            [22839, 20444],
            [22840, 20433],
            [22841, 20447],
            [22842, 20472],
            [22843, 20521],
            [22844, 20556],
            [22845, 20467],
            [22846, 20524],
            [22847, 20495],
            [22848, 20526],
            [22849, 20525],
            [22850, 20478],
            [22851, 20508],
            [22852, 20492],
            [22853, 20517],
            [22854, 20520],
            [22855, 20606],
            [22856, 20547],
            [22857, 20565],
            [22858, 20552],
            [22859, 20558],
            [22860, 20588],
            [22861, 20603],
            [22862, 20645],
            [22863, 20647],
            [22864, 20649],
            [22865, 20666],
            [22866, 20694],
            [22867, 20742],
            [22868, 20717],
            [22869, 20716],
            [22870, 20710],
            [22871, 20718],
            [22872, 20743],
            [22873, 20747],
            [22874, 20189],
            [22875, 27709],
            [22876, 20312],
            [22877, 20325],
            [22878, 20430],
            [22879, 40864],
            [22880, 27718],
            [22881, 31860],
            [22882, 20846],
            [22883, 24061],
            [22884, 40649],
            [22885, 39320],
            [22886, 20865],
            [22887, 22804],
            [22888, 21241],
            [22889, 21261],
            [22890, 35335],
            [22891, 21264],
            [22892, 20971],
            [22893, 22809],
            [22894, 20821],
            [22895, 20128],
            [22896, 20822],
            [22897, 20147],
            [22898, 34926],
            [22899, 34980],
            [22900, 20149],
            [22901, 33044],
            [22902, 35026],
            [22903, 31104],
            [22904, 23348],
            [22905, 34819],
            [22906, 32696],
            [22907, 20907],
            [22908, 20913],
            [22909, 20925],
            [22910, 20924],
            [23073, 20935],
            [23074, 20886],
            [23075, 20898],
            [23076, 20901],
            [23077, 35744],
            [23078, 23079, 35750],
            [23080, 35754],
            [23081, 23082, 35764],
            [23083, 35767],
            [23084, 23085, 35778],
            [23086, 35787],
            [23087, 35791],
            [23088, 35790],
            [23089, 23091, 35794],
            [23092, 35798],
            [23093, 23094, 35800],
            [23095, 35804],
            [23096, 23097, 35807],
            [23098, 35812],
            [23099, 23100, 35816],
            [23101, 35822],
            [23102, 35824],
            [23103, 35827],
            [23104, 35830],
            [23105, 35833],
            [23106, 35836],
            [23107, 23108, 35839],
            [23109, 35842],
            [23110, 35844],
            [23111, 35847],
            [23112, 35852],
            [23113, 35855],
            [23114, 23115, 35857],
            [23116, 23118, 35860],
            [23119, 35865],
            [23120, 35867],
            [23121, 35864],
            [23122, 35869],
            [23123, 23125, 35871],
            [23126, 35877],
            [23127, 35879],
            [23128, 23129, 35882],
            [23130, 23131, 35886],
            [23132, 23133, 35890],
            [23134, 23135, 35893],
            [23136, 21353],
            [23137, 21370],
            [23138, 38429],
            [23139, 38434],
            [23140, 38433],
            [23141, 38449],
            [23142, 38442],
            [23143, 38461],
            [23144, 38460],
            [23145, 38466],
            [23146, 38473],
            [23147, 38484],
            [23148, 38495],
            [23149, 38503],
            [23150, 38508],
            [23151, 38514],
            [23152, 38516],
            [23153, 38536],
            [23154, 38541],
            [23155, 38551],
            [23156, 38576],
            [23157, 37015],
            [23158, 37019],
            [23159, 37021],
            [23160, 37017],
            [23161, 37036],
            [23162, 37025],
            [23163, 37044],
            [23164, 37043],
            [23165, 37046],
            [23166, 37050],
            [23329, 37048],
            [23330, 37040],
            [23331, 37071],
            [23332, 37061],
            [23333, 37054],
            [23334, 37072],
            [23335, 37060],
            [23336, 37063],
            [23337, 37075],
            [23338, 37094],
            [23339, 37090],
            [23340, 37084],
            [23341, 37079],
            [23342, 37083],
            [23343, 37099],
            [23344, 37103],
            [23345, 37118],
            [23346, 37124],
            [23347, 37154],
            [23348, 37150],
            [23349, 37155],
            [23350, 37169],
            [23351, 37167],
            [23352, 37177],
            [23353, 37187],
            [23354, 37190],
            [23355, 21005],
            [23356, 22850],
            [23357, 21154],
            [23358, 23359, 21164],
            [23360, 21182],
            [23361, 21759],
            [23362, 21200],
            [23363, 21206],
            [23364, 21232],
            [23365, 21471],
            [23366, 29166],
            [23367, 30669],
            [23368, 24308],
            [23369, 20981],
            [23370, 20988],
            [23371, 39727],
            [23372, 21430],
            [23373, 24321],
            [23374, 30042],
            [23375, 24047],
            [23376, 22348],
            [23377, 22441],
            [23378, 22433],
            [23379, 22654],
            [23380, 22716],
            [23381, 22725],
            [23382, 22737],
            [23383, 22313],
            [23384, 22316],
            [23385, 22314],
            [23386, 22323],
            [23387, 22329],
            [23388, 23389, 22318],
            [23390, 22364],
            [23391, 22331],
            [23392, 22338],
            [23393, 22377],
            [23394, 22405],
            [23395, 22379],
            [23396, 22406],
            [23397, 22396],
            [23398, 22395],
            [23399, 22376],
            [23400, 22381],
            [23401, 22390],
            [23402, 22387],
            [23403, 22445],
            [23404, 22436],
            [23405, 22412],
            [23406, 22450],
            [23407, 22479],
            [23408, 22439],
            [23409, 22452],
            [23410, 22419],
            [23411, 22432],
            [23412, 22485],
            [23413, 22488],
            [23414, 22490],
            [23415, 22489],
            [23416, 22482],
            [23417, 22456],
            [23418, 22516],
            [23419, 22511],
            [23420, 22520],
            [23421, 22500],
            [23422, 22493],
            [23585, 22539],
            [23586, 22541],
            [23587, 22525],
            [23588, 22509],
            [23589, 22528],
            [23590, 22558],
            [23591, 22553],
            [23592, 22596],
            [23593, 22560],
            [23594, 22629],
            [23595, 22636],
            [23596, 22657],
            [23597, 22665],
            [23598, 22682],
            [23599, 22656],
            [23600, 39336],
            [23601, 40729],
            [23602, 25087],
            [23603, 33401],
            [23604, 33405],
            [23605, 33407],
            [23606, 33423],
            [23607, 33418],
            [23608, 33448],
            [23609, 33412],
            [23610, 33422],
            [23611, 33425],
            [23612, 33431],
            [23613, 33433],
            [23614, 33451],
            [23615, 33464],
            [23616, 33470],
            [23617, 33456],
            [23618, 33480],
            [23619, 33482],
            [23620, 33507],
            [23621, 33432],
            [23622, 33463],
            [23623, 33454],
            [23624, 23625, 33483],
            [23626, 33473],
            [23627, 33449],
            [23628, 33460],
            [23629, 33441],
            [23630, 33450],
            [23631, 33439],
            [23632, 33476],
            [23633, 33486],
            [23634, 33444],
            [23635, 33505],
            [23636, 33545],
            [23637, 33527],
            [23638, 33508],
            [23639, 33551],
            [23640, 33543],
            [23641, 33500],
            [23642, 33524],
            [23643, 33490],
            [23644, 33496],
            [23645, 33548],
            [23646, 33531],
            [23647, 33491],
            [23648, 33553],
            [23649, 33562],
            [23650, 33542],
            [23651, 23652, 33556],
            [23653, 33504],
            [23654, 33493],
            [23655, 33564],
            [23656, 33617],
            [23657, 23658, 33627],
            [23659, 33544],
            [23660, 33682],
            [23661, 33596],
            [23662, 33588],
            [23663, 33585],
            [23664, 33691],
            [23665, 33630],
            [23666, 33583],
            [23667, 33615],
            [23668, 33607],
            [23669, 33603],
            [23670, 33631],
            [23671, 33600],
            [23672, 33559],
            [23673, 33632],
            [23674, 33581],
            [23675, 33594],
            [23676, 33587],
            [23677, 33638],
            [23678, 33637],
            [23841, 33640],
            [23842, 33563],
            [23843, 33641],
            [23844, 33644],
            [23845, 33642],
            [23846, 23847, 33645],
            [23848, 33712],
            [23849, 33656],
            [23850, 23851, 33715],
            [23852, 33696],
            [23853, 33706],
            [23854, 33683],
            [23855, 33692],
            [23856, 33669],
            [23857, 33660],
            [23858, 33718],
            [23859, 33705],
            [23860, 33661],
            [23861, 33720],
            [23862, 33659],
            [23863, 33688],
            [23864, 33694],
            [23865, 33704],
            [23866, 33722],
            [23867, 33724],
            [23868, 33729],
            [23869, 33793],
            [23870, 33765],
            [23871, 33752],
            [23872, 22535],
            [23873, 33816],
            [23874, 33803],
            [23875, 33757],
            [23876, 33789],
            [23877, 33750],
            [23878, 33820],
            [23879, 33848],
            [23880, 33809],
            [23881, 33798],
            [23882, 33748],
            [23883, 33759],
            [23884, 33807],
            [23885, 33795],
            [23886, 23887, 33784],
            [23888, 33770],
            [23889, 33733],
            [23890, 33728],
            [23891, 33830],
            [23892, 33776],
            [23893, 33761],
            [23894, 33884],
            [23895, 33873],
            [23896, 33882],
            [23897, 33881],
            [23898, 33907],
            [23899, 23900, 33927],
            [23901, 33914],
            [23902, 33929],
            [23903, 33912],
            [23904, 33852],
            [23905, 33862],
            [23906, 33897],
            [23907, 33910],
            [23908, 33932],
            [23909, 33934],
            [23910, 33841],
            [23911, 33901],
            [23912, 33985],
            [23913, 33997],
            [23914, 34000],
            [23915, 34022],
            [23916, 33981],
            [23917, 34003],
            [23918, 33994],
            [23919, 33983],
            [23920, 33978],
            [23921, 34016],
            [23922, 33953],
            [23923, 33977],
            [23924, 33972],
            [23925, 33943],
            [23926, 34021],
            [23927, 34019],
            [23928, 34060],
            [23929, 29965],
            [23930, 34104],
            [23931, 34032],
            [23932, 34105],
            [23933, 34079],
            [23934, 34106],
            [24097, 34134],
            [24098, 34107],
            [24099, 34047],
            [24100, 34044],
            [24101, 34137],
            [24102, 34120],
            [24103, 34152],
            [24104, 34148],
            [24105, 34142],
            [24106, 34170],
            [24107, 30626],
            [24108, 34115],
            [24109, 34162],
            [24110, 34171],
            [24111, 34212],
            [24112, 34216],
            [24113, 34183],
            [24114, 34191],
            [24115, 34169],
            [24116, 34222],
            [24117, 34204],
            [24118, 34181],
            [24119, 34233],
            [24120, 34231],
            [24121, 34224],
            [24122, 34259],
            [24123, 34241],
            [24124, 34268],
            [24125, 34303],
            [24126, 34343],
            [24127, 34309],
            [24128, 34345],
            [24129, 34326],
            [24130, 34364],
            [24131, 24318],
            [24132, 24328],
            [24133, 22844],
            [24134, 22849],
            [24135, 32823],
            [24136, 22869],
            [24137, 22874],
            [24138, 22872],
            [24139, 21263],
            [24140, 23586],
            [24141, 23589],
            [24142, 23596],
            [24143, 23604],
            [24144, 25164],
            [24145, 25194],
            [24146, 25247],
            [24147, 25275],
            [24148, 25290],
            [24149, 25306],
            [24150, 25303],
            [24151, 25326],
            [24152, 25378],
            [24153, 25334],
            [24154, 25401],
            [24155, 25419],
            [24156, 25411],
            [24157, 25517],
            [24158, 25590],
            [24159, 25457],
            [24160, 25466],
            [24161, 25486],
            [24162, 25524],
            [24163, 25453],
            [24164, 25516],
            [24165, 25482],
            [24166, 25449],
            [24167, 25518],
            [24168, 25532],
            [24169, 25586],
            [24170, 25592],
            [24171, 25568],
            [24172, 25599],
            [24173, 25540],
            [24174, 25566],
            [24175, 25550],
            [24176, 25682],
            [24177, 25542],
            [24178, 25534],
            [24179, 25669],
            [24180, 25665],
            [24181, 25611],
            [24182, 25627],
            [24183, 25632],
            [24184, 25612],
            [24185, 25638],
            [24186, 25633],
            [24187, 25694],
            [24188, 25732],
            [24189, 25709],
            [24190, 25750],
            [24353, 25722],
            [24354, 24355, 25783],
            [24356, 25753],
            [24357, 25786],
            [24358, 25792],
            [24359, 25808],
            [24360, 25815],
            [24361, 25828],
            [24362, 25826],
            [24363, 25865],
            [24364, 25893],
            [24365, 25902],
            [24366, 24331],
            [24367, 24530],
            [24368, 29977],
            [24369, 24337],
            [24370, 21343],
            [24371, 21489],
            [24372, 21501],
            [24373, 21481],
            [24374, 21480],
            [24375, 21499],
            [24376, 21522],
            [24377, 21526],
            [24378, 21510],
            [24379, 21579],
            [24380, 24382, 21586],
            [24383, 21590],
            [24384, 21571],
            [24385, 21537],
            [24386, 21591],
            [24387, 21593],
            [24388, 21539],
            [24389, 21554],
            [24390, 21634],
            [24391, 21652],
            [24392, 21623],
            [24393, 21617],
            [24394, 21604],
            [24395, 24396, 21658],
            [24397, 21636],
            [24398, 21622],
            [24399, 21606],
            [24400, 21661],
            [24401, 21712],
            [24402, 21677],
            [24403, 21698],
            [24404, 21684],
            [24405, 21714],
            [24406, 21671],
            [24407, 21670],
            [24408, 24409, 21715],
            [24410, 21618],
            [24411, 21667],
            [24412, 21717],
            [24413, 21691],
            [24414, 21695],
            [24415, 21708],
            [24416, 24417, 21721],
            [24418, 21724],
            [24419, 24420, 21673],
            [24421, 21668],
            [24422, 21725],
            [24423, 21711],
            [24424, 21726],
            [24425, 21787],
            [24426, 21735],
            [24427, 21792],
            [24428, 21757],
            [24429, 21780],
            [24430, 21747],
            [24431, 24432, 21794],
            [24433, 21775],
            [24434, 21777],
            [24435, 21799],
            [24436, 21802],
            [24437, 21863],
            [24438, 21903],
            [24439, 21941],
            [24440, 21833],
            [24441, 21869],
            [24442, 21825],
            [24443, 21845],
            [24444, 21823],
            [24445, 21840],
            [24446, 21820],
            [24609, 21815],
            [24610, 21846],
            [24611, 24613, 21877],
            [24614, 21811],
            [24615, 21808],
            [24616, 21852],
            [24617, 21899],
            [24618, 21970],
            [24619, 21891],
            [24620, 21937],
            [24621, 21945],
            [24622, 21896],
            [24623, 21889],
            [24624, 21919],
            [24625, 21886],
            [24626, 21974],
            [24627, 21905],
            [24628, 21883],
            [24629, 21983],
            [24630, 24631, 21949],
            [24632, 21908],
            [24633, 21913],
            [24634, 21994],
            [24635, 22007],
            [24636, 21961],
            [24637, 22047],
            [24638, 21969],
            [24639, 24640, 21995],
            [24641, 21972],
            [24642, 21990],
            [24643, 21981],
            [24644, 21956],
            [24645, 21999],
            [24646, 21989],
            [24647, 24648, 22002],
            [24649, 24650, 21964],
            [24651, 21992],
            [24652, 22005],
            [24653, 21988],
            [24654, 36756],
            [24655, 22046],
            [24656, 22024],
            [24657, 22028],
            [24658, 22017],
            [24659, 22052],
            [24660, 22051],
            [24661, 22014],
            [24662, 22016],
            [24663, 22055],
            [24664, 22061],
            [24665, 22104],
            [24666, 22073],
            [24667, 22103],
            [24668, 22060],
            [24669, 22093],
            [24670, 22114],
            [24671, 22105],
            [24672, 22108],
            [24673, 22092],
            [24674, 22100],
            [24675, 22150],
            [24676, 22116],
            [24677, 22129],
            [24678, 22123],
            [24679, 24680, 22139],
            [24681, 22149],
            [24682, 22163],
            [24683, 22191],
            [24684, 22228],
            [24685, 22231],
            [24686, 22237],
            [24687, 22241],
            [24688, 22261],
            [24689, 22251],
            [24690, 22265],
            [24691, 22271],
            [24692, 22276],
            [24693, 22282],
            [24694, 22281],
            [24695, 22300],
            [24696, 24079],
            [24697, 24089],
            [24698, 24084],
            [24699, 24081],
            [24700, 24113],
            [24701, 24702, 24123],
            [24865, 24119],
            [24866, 24132],
            [24867, 24148],
            [24868, 24155],
            [24869, 24158],
            [24870, 24161],
            [24871, 23692],
            [24872, 23674],
            [24873, 23693],
            [24874, 23696],
            [24875, 23702],
            [24876, 23688],
            [24877, 24878, 23704],
            [24879, 23697],
            [24880, 23706],
            [24881, 23708],
            [24882, 23733],
            [24883, 23714],
            [24884, 23741],
            [24885, 23724],
            [24886, 23723],
            [24887, 23729],
            [24888, 23715],
            [24889, 23745],
            [24890, 23735],
            [24891, 23748],
            [24892, 23762],
            [24893, 23780],
            [24894, 23755],
            [24895, 23781],
            [24896, 24897, 23810],
            [24898, 23847],
            [24899, 23846],
            [24900, 23854],
            [24901, 23844],
            [24902, 23838],
            [24903, 23814],
            [24904, 23835],
            [24905, 23896],
            [24906, 23870],
            [24907, 23860],
            [24908, 23869],
            [24909, 23916],
            [24910, 23899],
            [24911, 23919],
            [24912, 23901],
            [24913, 23915],
            [24914, 23883],
            [24915, 23882],
            [24916, 23913],
            [24917, 23924],
            [24918, 23938],
            [24919, 23961],
            [24920, 23965],
            [24921, 35955],
            [24922, 23991],
            [24923, 24005],
            [24924, 24435],
            [24925, 24439],
            [24926, 24450],
            [24927, 24455],
            [24928, 24457],
            [24929, 24460],
            [24930, 24469],
            [24931, 24473],
            [24932, 24476],
            [24933, 24488],
            [24934, 24493],
            [24935, 24501],
            [24936, 24508],
            [24937, 34914],
            [24938, 24417],
            [24939, 29357],
            [24940, 29360],
            [24941, 29364],
            [24942, 24943, 29367],
            [24944, 29379],
            [24945, 29377],
            [24946, 29390],
            [24947, 29389],
            [24948, 29394],
            [24949, 29416],
            [24950, 29423],
            [24951, 29417],
            [24952, 29426],
            [24953, 29428],
            [24954, 29431],
            [24955, 29441],
            [24956, 29427],
            [24957, 29443],
            [24958, 29434],
            [25121, 29435],
            [25122, 29463],
            [25123, 29459],
            [25124, 29473],
            [25125, 29450],
            [25126, 29470],
            [25127, 29469],
            [25128, 29461],
            [25129, 29474],
            [25130, 29497],
            [25131, 29477],
            [25132, 29484],
            [25133, 29496],
            [25134, 29489],
            [25135, 29520],
            [25136, 29517],
            [25137, 29527],
            [25138, 29536],
            [25139, 29548],
            [25140, 29551],
            [25141, 29566],
            [25142, 33307],
            [25143, 22821],
            [25144, 39143],
            [25145, 22820],
            [25146, 22786],
            [25147, 39267],
            [25148, 25153, 39271],
            [25154, 39284],
            [25155, 39287],
            [25156, 39293],
            [25157, 39296],
            [25158, 39300],
            [25159, 39303],
            [25160, 39306],
            [25161, 39309],
            [25162, 25163, 39312],
            [25164, 25166, 39315],
            [25167, 24192],
            [25168, 24209],
            [25169, 24203],
            [25170, 24214],
            [25171, 24229],
            [25172, 24224],
            [25173, 24249],
            [25174, 24245],
            [25175, 24254],
            [25176, 24243],
            [25177, 36179],
            [25178, 24274],
            [25179, 24273],
            [25180, 24283],
            [25181, 24296],
            [25182, 24298],
            [25183, 33210],
            [25184, 24516],
            [25185, 24521],
            [25186, 24534],
            [25187, 24527],
            [25188, 24579],
            [25189, 24558],
            [25190, 24580],
            [25191, 24545],
            [25192, 24548],
            [25193, 24574],
            [25194, 25195, 24581],
            [25196, 24554],
            [25197, 24557],
            [25198, 24568],
            [25199, 24601],
            [25200, 24629],
            [25201, 24614],
            [25202, 24603],
            [25203, 24591],
            [25204, 24589],
            [25205, 24617],
            [25206, 24619],
            [25207, 24586],
            [25208, 24639],
            [25209, 24609],
            [25210, 25211, 24696],
            [25212, 24699],
            [25213, 24698],
            [25214, 24642],
            [25377, 24682],
            [25378, 24701],
            [25379, 24726],
            [25380, 24730],
            [25381, 24749],
            [25382, 24733],
            [25383, 24707],
            [25384, 24722],
            [25385, 24716],
            [25386, 24731],
            [25387, 24812],
            [25388, 24763],
            [25389, 24753],
            [25390, 24797],
            [25391, 24792],
            [25392, 24774],
            [25393, 24794],
            [25394, 24756],
            [25395, 24864],
            [25396, 24870],
            [25397, 24853],
            [25398, 24867],
            [25399, 24820],
            [25400, 24832],
            [25401, 24846],
            [25402, 24875],
            [25403, 24906],
            [25404, 24949],
            [25405, 25004],
            [25406, 24980],
            [25407, 24999],
            [25408, 25015],
            [25409, 25044],
            [25410, 25077],
            [25411, 24541],
            [25412, 38579],
            [25413, 38377],
            [25414, 38379],
            [25415, 38385],
            [25416, 38387],
            [25417, 25418, 38389],
            [25419, 38396],
            [25420, 38398],
            [25421, 25422, 38403],
            [25423, 38406],
            [25424, 38408],
            [25425, 25428, 38410],
            [25429, 38415],
            [25430, 38418],
            [25431, 25433, 38421],
            [25434, 25435, 38425],
            [25436, 20012],
            [25437, 29247],
            [25438, 25109],
            [25439, 27701],
            [25440, 27732],
            [25441, 27740],
            [25442, 27722],
            [25443, 27811],
            [25444, 27781],
            [25445, 27792],
            [25446, 27796],
            [25447, 27788],
            [25448, 25449, 27752],
            [25450, 27764],
            [25451, 27766],
            [25452, 27782],
            [25453, 27817],
            [25454, 27856],
            [25455, 27860],
            [25456, 27821],
            [25457, 25458, 27895],
            [25459, 27889],
            [25460, 27863],
            [25461, 27826],
            [25462, 27872],
            [25463, 27862],
            [25464, 27898],
            [25465, 27883],
            [25466, 27886],
            [25467, 27825],
            [25468, 27859],
            [25469, 27887],
            [25470, 27902],
            [25633, 27961],
            [25634, 27943],
            [25635, 27916],
            [25636, 27971],
            [25637, 27976],
            [25638, 27911],
            [25639, 27908],
            [25640, 27929],
            [25641, 27918],
            [25642, 27947],
            [25643, 27981],
            [25644, 27950],
            [25645, 27957],
            [25646, 27930],
            [25647, 27983],
            [25648, 27986],
            [25649, 27988],
            [25650, 27955],
            [25651, 28049],
            [25652, 28015],
            [25653, 28062],
            [25654, 28064],
            [25655, 27998],
            [25656, 25657, 28051],
            [25658, 27996],
            [25659, 28000],
            [25660, 28028],
            [25661, 28003],
            [25662, 28186],
            [25663, 28103],
            [25664, 28101],
            [25665, 28126],
            [25666, 28174],
            [25667, 28095],
            [25668, 28128],
            [25669, 28177],
            [25670, 28134],
            [25671, 28125],
            [25672, 28121],
            [25673, 28182],
            [25674, 28075],
            [25675, 28172],
            [25676, 28078],
            [25677, 28203],
            [25678, 28270],
            [25679, 28238],
            [25680, 28267],
            [25681, 28338],
            [25682, 28255],
            [25683, 28294],
            [25684, 25685, 28243],
            [25686, 28210],
            [25687, 28197],
            [25688, 28228],
            [25689, 28383],
            [25690, 28337],
            [25691, 28312],
            [25692, 28384],
            [25693, 28461],
            [25694, 28386],
            [25695, 28325],
            [25696, 28327],
            [25697, 28349],
            [25698, 28347],
            [25699, 28343],
            [25700, 28375],
            [25701, 28340],
            [25702, 28367],
            [25703, 28303],
            [25704, 28354],
            [25705, 28319],
            [25706, 28514],
            [25707, 25708, 28486],
            [25709, 28452],
            [25710, 28437],
            [25711, 28409],
            [25712, 28463],
            [25713, 28470],
            [25714, 28491],
            [25715, 28532],
            [25716, 28458],
            [25717, 28425],
            [25718, 28457],
            [25719, 28553],
            [25720, 28557],
            [25721, 28556],
            [25722, 28536],
            [25723, 28530],
            [25724, 28540],
            [25725, 28538],
            [25726, 28625],
            [25889, 28617],
            [25890, 28583],
            [25891, 28601],
            [25892, 28598],
            [25893, 28610],
            [25894, 28641],
            [25895, 28654],
            [25896, 28638],
            [25897, 28640],
            [25898, 28655],
            [25899, 28698],
            [25900, 28707],
            [25901, 28699],
            [25902, 28729],
            [25903, 28725],
            [25904, 28751],
            [25905, 28766],
            [25906, 23424],
            [25907, 23428],
            [25908, 23445],
            [25909, 23443],
            [25910, 23461],
            [25911, 23480],
            [25912, 29999],
            [25913, 39582],
            [25914, 25652],
            [25915, 23524],
            [25916, 23534],
            [25917, 35120],
            [25918, 23536],
            [25919, 36423],
            [25920, 35591],
            [25921, 36790],
            [25922, 36819],
            [25923, 36821],
            [25924, 36837],
            [25925, 36846],
            [25926, 36836],
            [25927, 36841],
            [25928, 36838],
            [25929, 36851],
            [25930, 36840],
            [25931, 36869],
            [25932, 36868],
            [25933, 36875],
            [25934, 36902],
            [25935, 36881],
            [25936, 36877],
            [25937, 36886],
            [25938, 36897],
            [25939, 25940, 36917],
            [25941, 36909],
            [25942, 36911],
            [25943, 36932],
            [25944, 25945, 36945],
            [25946, 36944],
            [25947, 36968],
            [25948, 36952],
            [25949, 36962],
            [25950, 36955],
            [25951, 26297],
            [25952, 36980],
            [25953, 36989],
            [25954, 36994],
            [25955, 37000],
            [25956, 36995],
            [25957, 37003],
            [25958, 24400],
            [25959, 24407],
            [25960, 24406],
            [25961, 24408],
            [25962, 23611],
            [25963, 21675],
            [25964, 23632],
            [25965, 23641],
            [25966, 23409],
            [25967, 23651],
            [25968, 23654],
            [25969, 32700],
            [25970, 24362],
            [25971, 24361],
            [25972, 24365],
            [25973, 33396],
            [25974, 24380],
            [25975, 39739],
            [25976, 23662],
            [25977, 22913],
            [25978, 22915],
            [25979, 22925],
            [25980, 25981, 22953],
            [25982, 22947],
            [26145, 22935],
            [26146, 22986],
            [26147, 22955],
            [26148, 22942],
            [26149, 22948],
            [26150, 22994],
            [26151, 22962],
            [26152, 22959],
            [26153, 22999],
            [26154, 22974],
            [26155, 26156, 23045],
            [26157, 23005],
            [26158, 23048],
            [26159, 23011],
            [26160, 23000],
            [26161, 23033],
            [26162, 23052],
            [26163, 23049],
            [26164, 23090],
            [26165, 23092],
            [26166, 23057],
            [26167, 23075],
            [26168, 23059],
            [26169, 23104],
            [26170, 23143],
            [26171, 23114],
            [26172, 23125],
            [26173, 23100],
            [26174, 23138],
            [26175, 23157],
            [26176, 33004],
            [26177, 23210],
            [26178, 23195],
            [26179, 23159],
            [26180, 23162],
            [26181, 23230],
            [26182, 23275],
            [26183, 23218],
            [26184, 23250],
            [26185, 23252],
            [26186, 23224],
            [26187, 23264],
            [26188, 23267],
            [26189, 23281],
            [26190, 23254],
            [26191, 23270],
            [26192, 23256],
            [26193, 23260],
            [26194, 23305],
            [26195, 23319],
            [26196, 23318],
            [26197, 23346],
            [26198, 23351],
            [26199, 23360],
            [26200, 23573],
            [26201, 23580],
            [26202, 23386],
            [26203, 23397],
            [26204, 23411],
            [26205, 23377],
            [26206, 23379],
            [26207, 23394],
            [26208, 39541],
            [26209, 26210, 39543],
            [26211, 39546],
            [26212, 39551],
            [26213, 39549],
            [26214, 26215, 39552],
            [26216, 39557],
            [26217, 39560],
            [26218, 39562],
            [26219, 39568],
            [26220, 26221, 39570],
            [26222, 39574],
            [26223, 39576],
            [26224, 26226, 39579],
            [26227, 26228, 39583],
            [26229, 26230, 39586],
            [26231, 39589],
            [26232, 39591],
            [26233, 32415],
            [26234, 32417],
            [26235, 32419],
            [26236, 32421],
            [26237, 26238, 32424],
            [26401, 32429],
            [26402, 32432],
            [26403, 32446],
            [26404, 26406, 32448],
            [26407, 32457],
            [26408, 26409, 32459],
            [26410, 32464],
            [26411, 32468],
            [26412, 32471],
            [26413, 32475],
            [26414, 26415, 32480],
            [26416, 32488],
            [26417, 32491],
            [26418, 26419, 32494],
            [26420, 26421, 32497],
            [26422, 32525],
            [26423, 32502],
            [26424, 26425, 32506],
            [26426, 32510],
            [26427, 26429, 32513],
            [26430, 26431, 32519],
            [26432, 26433, 32523],
            [26434, 32527],
            [26435, 26436, 32529],
            [26437, 32535],
            [26438, 32537],
            [26439, 32540],
            [26440, 32539],
            [26441, 32543],
            [26442, 26448, 32545],
            [26449, 26452, 32554],
            [26453, 26457, 32559],
            [26458, 32565],
            [26459, 24186],
            [26460, 30079],
            [26461, 24027],
            [26462, 30014],
            [26463, 37013],
            [26464, 29582],
            [26465, 29585],
            [26466, 29614],
            [26467, 29602],
            [26468, 29599],
            [26469, 29647],
            [26470, 29634],
            [26471, 29649],
            [26472, 29623],
            [26473, 29619],
            [26474, 29632],
            [26475, 29641],
            [26476, 29640],
            [26477, 29669],
            [26478, 29657],
            [26479, 39036],
            [26480, 29706],
            [26481, 29673],
            [26482, 29671],
            [26483, 29662],
            [26484, 29626],
            [26485, 29682],
            [26486, 29711],
            [26487, 29738],
            [26488, 29787],
            [26489, 29734],
            [26490, 29733],
            [26491, 29736],
            [26492, 29744],
            [26493, 29742],
            [26494, 29740],
            [26657, 29723],
            [26658, 29722],
            [26659, 29761],
            [26660, 29788],
            [26661, 29783],
            [26662, 29781],
            [26663, 29785],
            [26664, 29815],
            [26665, 29805],
            [26666, 29822],
            [26667, 29852],
            [26668, 29838],
            [26669, 26670, 29824],
            [26671, 29831],
            [26672, 29835],
            [26673, 29854],
            [26674, 26675, 29864],
            [26676, 29840],
            [26677, 29863],
            [26678, 29906],
            [26679, 29882],
            [26680, 26682, 38890],
            [26683, 26444],
            [26684, 26451],
            [26685, 26462],
            [26686, 26440],
            [26687, 26473],
            [26688, 26533],
            [26689, 26503],
            [26690, 26474],
            [26691, 26483],
            [26692, 26520],
            [26693, 26535],
            [26694, 26485],
            [26695, 26536],
            [26696, 26526],
            [26697, 26541],
            [26698, 26507],
            [26699, 26487],
            [26700, 26492],
            [26701, 26608],
            [26702, 26633],
            [26703, 26584],
            [26704, 26634],
            [26705, 26601],
            [26706, 26544],
            [26707, 26636],
            [26708, 26585],
            [26709, 26549],
            [26710, 26586],
            [26711, 26547],
            [26712, 26589],
            [26713, 26624],
            [26714, 26563],
            [26715, 26552],
            [26716, 26594],
            [26717, 26638],
            [26718, 26561],
            [26719, 26621],
            [26720, 26721, 26674],
            [26722, 26723, 26720],
            [26724, 26702],
            [26725, 26722],
            [26726, 26692],
            [26727, 26724],
            [26728, 26755],
            [26729, 26653],
            [26730, 26709],
            [26731, 26726],
            [26732, 26689],
            [26733, 26727],
            [26734, 26688],
            [26735, 26686],
            [26736, 26698],
            [26737, 26697],
            [26738, 26665],
            [26739, 26805],
            [26740, 26767],
            [26741, 26740],
            [26742, 26743],
            [26743, 26771],
            [26744, 26731],
            [26745, 26818],
            [26746, 26990],
            [26747, 26876],
            [26748, 26749, 26911],
            [26750, 26873],
            [26913, 26916],
            [26914, 26864],
            [26915, 26891],
            [26916, 26881],
            [26917, 26967],
            [26918, 26851],
            [26919, 26896],
            [26920, 26993],
            [26921, 26937],
            [26922, 26976],
            [26923, 26946],
            [26924, 26973],
            [26925, 27012],
            [26926, 26987],
            [26927, 27008],
            [26928, 27032],
            [26929, 27000],
            [26930, 26932],
            [26931, 27084],
            [26932, 26933, 27015],
            [26934, 27086],
            [26935, 27017],
            [26936, 26982],
            [26937, 26979],
            [26938, 27001],
            [26939, 27035],
            [26940, 27047],
            [26941, 27067],
            [26942, 27051],
            [26943, 27053],
            [26944, 27092],
            [26945, 27057],
            [26946, 27073],
            [26947, 27082],
            [26948, 27103],
            [26949, 27029],
            [26950, 27104],
            [26951, 27021],
            [26952, 27135],
            [26953, 27183],
            [26954, 27117],
            [26955, 26956, 27159],
            [26957, 27237],
            [26958, 27122],
            [26959, 27204],
            [26960, 27198],
            [26961, 27296],
            [26962, 27216],
            [26963, 27227],
            [26964, 27189],
            [26965, 27278],
            [26966, 27257],
            [26967, 27197],
            [26968, 27176],
            [26969, 27224],
            [26970, 27260],
            [26971, 27281],
            [26972, 27280],
            [26973, 27305],
            [26974, 27287],
            [26975, 27307],
            [26976, 29495],
            [26977, 29522],
            [26978, 26979, 27521],
            [26980, 27527],
            [26981, 27524],
            [26982, 26983, 27538],
            [26984, 27533],
            [26985, 26986, 27546],
            [26987, 27553],
            [26988, 27562],
            [26989, 36715],
            [26990, 36717],
            [26991, 26993, 36721],
            [26994, 26995, 36725],
            [26996, 36728],
            [26997, 36727],
            [26998, 26999, 36729],
            [27000, 36732],
            [27001, 36734],
            [27002, 27003, 36737],
            [27004, 36740],
            [27005, 36743],
            [27006, 36747],
            [27169, 27171, 36749],
            [27172, 36760],
            [27173, 36762],
            [27174, 36558],
            [27175, 25099],
            [27176, 25111],
            [27177, 25115],
            [27178, 25119],
            [27179, 25122],
            [27180, 25121],
            [27181, 25125],
            [27182, 25124],
            [27183, 25132],
            [27184, 33255],
            [27185, 29935],
            [27186, 29940],
            [27187, 29951],
            [27188, 29967],
            [27189, 29969],
            [27190, 29971],
            [27191, 25908],
            [27192, 27194, 26094],
            [27195, 26122],
            [27196, 26137],
            [27197, 26482],
            [27198, 26115],
            [27199, 26133],
            [27200, 26112],
            [27201, 28805],
            [27202, 26359],
            [27203, 26141],
            [27204, 26164],
            [27205, 26161],
            [27206, 26166],
            [27207, 26165],
            [27208, 32774],
            [27209, 26207],
            [27210, 26196],
            [27211, 26177],
            [27212, 26191],
            [27213, 26198],
            [27214, 26209],
            [27215, 26199],
            [27216, 26231],
            [27217, 26244],
            [27218, 26252],
            [27219, 26279],
            [27220, 26269],
            [27221, 26302],
            [27222, 27223, 26331],
            [27224, 26342],
            [27225, 26345],
            [27226, 27227, 36146],
            [27228, 36150],
            [27229, 36155],
            [27230, 36157],
            [27231, 36160],
            [27232, 27233, 36165],
            [27234, 27235, 36168],
            [27236, 36167],
            [27237, 36173],
            [27238, 36181],
            [27239, 36185],
            [27240, 35271],
            [27241, 27243, 35274],
            [27244, 27247, 35278],
            [27248, 29294],
            [27249, 29343],
            [27250, 29277],
            [27251, 29286],
            [27252, 29295],
            [27253, 27254, 29310],
            [27255, 29316],
            [27256, 29323],
            [27257, 29325],
            [27258, 29327],
            [27259, 29330],
            [27260, 25352],
            [27261, 25394],
            [27262, 25520],
            [27425, 25663],
            [27426, 25816],
            [27427, 32772],
            [27428, 27626],
            [27429, 27635],
            [27430, 27645],
            [27431, 27637],
            [27432, 27641],
            [27433, 27653],
            [27434, 27655],
            [27435, 27654],
            [27436, 27661],
            [27437, 27669],
            [27438, 27440, 27672],
            [27441, 27681],
            [27442, 27689],
            [27443, 27684],
            [27444, 27690],
            [27445, 27698],
            [27446, 25909],
            [27447, 25941],
            [27448, 25963],
            [27449, 29261],
            [27450, 29266],
            [27451, 29270],
            [27452, 29232],
            [27453, 34402],
            [27454, 21014],
            [27455, 32927],
            [27456, 32924],
            [27457, 32915],
            [27458, 32956],
            [27459, 26378],
            [27460, 32957],
            [27461, 32945],
            [27462, 32939],
            [27463, 32941],
            [27464, 32948],
            [27465, 32951],
            [27466, 27469, 32999],
            [27470, 32987],
            [27471, 32962],
            [27472, 32964],
            [27473, 32985],
            [27474, 32973],
            [27475, 32983],
            [27476, 26384],
            [27477, 32989],
            [27478, 33003],
            [27479, 33009],
            [27480, 33012],
            [27481, 33005],
            [27482, 27483, 33037],
            [27484, 33010],
            [27485, 33020],
            [27486, 26389],
            [27487, 33042],
            [27488, 35930],
            [27489, 33078],
            [27490, 33054],
            [27491, 33068],
            [27492, 33048],
            [27493, 33074],
            [27494, 33096],
            [27495, 33100],
            [27496, 33107],
            [27497, 33140],
            [27498, 27499, 33113],
            [27500, 33137],
            [27501, 33120],
            [27502, 33129],
            [27503, 27504, 33148],
            [27505, 33133],
            [27506, 33127],
            [27507, 22605],
            [27508, 23221],
            [27509, 33160],
            [27510, 33154],
            [27511, 33169],
            [27512, 28373],
            [27513, 33187],
            [27514, 33194],
            [27515, 33228],
            [27516, 26406],
            [27517, 33226],
            [27518, 33211],
            [27681, 33217],
            [27682, 33190],
            [27683, 27428],
            [27684, 27447],
            [27685, 27449],
            [27686, 27459],
            [27687, 27462],
            [27688, 27481],
            [27689, 27691, 39121],
            [27692, 39125],
            [27693, 27694, 39129],
            [27695, 27571],
            [27696, 24384],
            [27697, 27586],
            [27698, 35315],
            [27699, 26000],
            [27700, 40785],
            [27701, 26003],
            [27702, 26044],
            [27703, 26054],
            [27704, 26052],
            [27705, 26051],
            [27706, 26060],
            [27707, 26062],
            [27708, 26066],
            [27709, 26070],
            [27710, 28800],
            [27711, 28828],
            [27712, 28822],
            [27713, 28829],
            [27714, 28859],
            [27715, 28864],
            [27716, 28855],
            [27717, 28843],
            [27718, 28849],
            [27719, 28904],
            [27720, 28874],
            [27721, 28944],
            [27722, 28947],
            [27723, 28950],
            [27724, 28975],
            [27725, 28977],
            [27726, 29043],
            [27727, 29020],
            [27728, 29032],
            [27729, 28997],
            [27730, 29042],
            [27731, 29002],
            [27732, 29048],
            [27733, 29050],
            [27734, 29080],
            [27735, 29107],
            [27736, 29109],
            [27737, 29096],
            [27738, 29088],
            [27739, 29152],
            [27740, 29140],
            [27741, 29159],
            [27742, 29177],
            [27743, 29213],
            [27744, 29224],
            [27745, 28780],
            [27746, 28952],
            [27747, 29030],
            [27748, 29113],
            [27749, 25150],
            [27750, 25149],
            [27751, 25155],
            [27752, 27753, 25160],
            [27754, 31035],
            [27755, 31040],
            [27756, 31046],
            [27757, 31049],
            [27758, 27759, 31067],
            [27760, 31059],
            [27761, 31066],
            [27762, 31074],
            [27763, 31063],
            [27764, 31072],
            [27765, 31087],
            [27766, 31079],
            [27767, 31098],
            [27768, 31109],
            [27769, 31114],
            [27770, 31130],
            [27771, 31143],
            [27772, 31155],
            [27773, 24529],
            [27774, 24528],
            [27937, 24636],
            [27938, 24669],
            [27939, 24666],
            [27940, 24679],
            [27941, 24641],
            [27942, 24665],
            [27943, 24675],
            [27944, 24747],
            [27945, 24838],
            [27946, 24845],
            [27947, 24925],
            [27948, 25001],
            [27949, 24989],
            [27950, 25035],
            [27951, 25041],
            [27952, 25094],
            [27953, 32896],
            [27954, 32895],
            [27955, 27795],
            [27956, 27894],
            [27957, 28156],
            [27958, 30710],
            [27959, 30712],
            [27960, 30720],
            [27961, 30729],
            [27962, 27963, 30743],
            [27964, 30737],
            [27965, 26027],
            [27966, 30765],
            [27967, 27968, 30748],
            [27969, 27971, 30777],
            [27972, 30751],
            [27973, 30780],
            [27974, 30757],
            [27975, 30764],
            [27976, 30755],
            [27977, 30761],
            [27978, 30798],
            [27979, 30829],
            [27980, 27981, 30806],
            [27982, 30758],
            [27983, 30800],
            [27984, 30791],
            [27985, 30796],
            [27986, 30826],
            [27987, 30875],
            [27988, 30867],
            [27989, 30874],
            [27990, 30855],
            [27991, 30876],
            [27992, 30881],
            [27993, 30883],
            [27994, 30898],
            [27995, 30905],
            [27996, 30885],
            [27997, 30932],
            [27998, 30937],
            [27999, 30921],
            [28000, 30956],
            [28001, 30962],
            [28002, 30981],
            [28003, 30964],
            [28004, 30995],
            [28005, 31012],
            [28006, 31006],
            [28007, 31028],
            [28008, 40859],
            [28009, 40697],
            [28010, 28011, 40699],
            [28012, 30449],
            [28013, 30468],
            [28014, 30477],
            [28015, 30457],
            [28016, 28017, 30471],
            [28018, 30490],
            [28019, 30498],
            [28020, 30489],
            [28021, 30509],
            [28022, 30502],
            [28023, 30517],
            [28024, 30520],
            [28025, 28026, 30544],
            [28027, 30535],
            [28028, 30531],
            [28029, 30554],
            [28030, 30568],
            [28193, 30562],
            [28194, 30565],
            [28195, 30591],
            [28196, 30605],
            [28197, 30589],
            [28198, 30592],
            [28199, 30604],
            [28200, 30609],
            [28201, 28202, 30623],
            [28203, 30640],
            [28204, 30645],
            [28205, 30653],
            [28206, 30010],
            [28207, 30016],
            [28208, 30030],
            [28209, 30027],
            [28210, 30024],
            [28211, 30043],
            [28212, 30066],
            [28213, 30073],
            [28214, 30083],
            [28215, 32600],
            [28216, 32609],
            [28217, 32607],
            [28218, 35400],
            [28219, 32616],
            [28220, 32628],
            [28221, 32625],
            [28222, 32633],
            [28223, 32641],
            [28224, 32638],
            [28225, 30413],
            [28226, 30437],
            [28227, 34866],
            [28228, 28230, 38021],
            [28231, 38027],
            [28232, 38026],
            [28233, 28234, 38028],
            [28235, 28236, 38031],
            [28237, 38036],
            [28238, 38039],
            [28239, 38037],
            [28240, 28242, 38042],
            [28243, 28244, 38051],
            [28245, 38059],
            [28246, 38058],
            [28247, 38061],
            [28248, 38060],
            [28249, 28250, 38063],
            [28251, 38066],
            [28252, 38068],
            [28253, 28257, 38070],
            [28258, 28259, 38076],
            [28260, 38079],
            [28261, 38084],
            [28262, 28268, 38088],
            [28269, 28271, 38096],
            [28272, 28274, 38101],
            [28275, 38105],
            [28276, 38104],
            [28277, 38107],
            [28278, 28280, 38110],
            [28281, 38114],
            [28282, 28283, 38116],
            [28284, 28285, 38119],
            [28286, 38122],
            [28449, 38121],
            [28450, 38123],
            [28451, 28452, 38126],
            [28453, 28455, 38131],
            [28456, 38135],
            [28457, 38137],
            [28458, 28459, 38140],
            [28460, 38143],
            [28461, 38147],
            [28462, 38146],
            [28463, 28464, 38150],
            [28465, 28466, 38153],
            [28467, 28469, 38157],
            [28470, 28474, 38162],
            [28475, 38168],
            [28476, 38171],
            [28477, 28479, 38173],
            [28480, 38178],
            [28481, 28482, 38186],
            [28483, 38185],
            [28484, 38188],
            [28485, 28486, 38193],
            [28487, 38196],
            [28488, 28490, 38198],
            [28491, 38204],
            [28492, 28493, 38206],
            [28494, 38210],
            [28495, 38197],
            [28496, 28498, 38212],
            [28499, 38217],
            [28500, 38220],
            [28501, 28502, 38222],
            [28503, 28505, 38226],
            [28506, 28509, 38230],
            [28510, 38235],
            [28511, 28512, 38238],
            [28513, 38237],
            [28514, 28515, 38241],
            [28516, 28524, 38244],
            [28525, 38255],
            [28526, 28528, 38257],
            [28529, 38202],
            [28530, 30695],
            [28531, 30700],
            [28532, 38601],
            [28533, 31189],
            [28534, 31213],
            [28535, 31203],
            [28536, 31211],
            [28537, 31238],
            [28538, 23879],
            [28539, 31235],
            [28540, 31234],
            [28541, 31262],
            [28542, 31252],
            [28705, 31289],
            [28706, 31287],
            [28707, 31313],
            [28708, 40655],
            [28709, 39333],
            [28710, 31344],
            [28711, 30344],
            [28712, 30350],
            [28713, 30355],
            [28714, 30361],
            [28715, 30372],
            [28716, 29918],
            [28717, 29920],
            [28718, 29996],
            [28719, 40480],
            [28720, 40482],
            [28721, 28725, 40488],
            [28726, 40498],
            [28727, 40497],
            [28728, 40502],
            [28729, 40504],
            [28730, 40503],
            [28731, 28732, 40505],
            [28733, 40510],
            [28734, 28735, 40513],
            [28736, 40516],
            [28737, 28740, 40518],
            [28741, 28742, 40523],
            [28743, 40526],
            [28744, 40529],
            [28745, 40533],
            [28746, 40535],
            [28747, 28749, 40538],
            [28750, 40542],
            [28751, 40547],
            [28752, 28758, 40550],
            [28759, 40561],
            [28760, 40557],
            [28761, 40563],
            [28762, 30098],
            [28763, 30100],
            [28764, 30102],
            [28765, 30112],
            [28766, 30109],
            [28767, 30124],
            [28768, 30115],
            [28769, 28770, 30131],
            [28771, 30136],
            [28772, 30148],
            [28773, 30129],
            [28774, 30128],
            [28775, 30147],
            [28776, 30146],
            [28777, 30166],
            [28778, 30157],
            [28779, 30179],
            [28780, 30184],
            [28781, 30182],
            [28782, 30180],
            [28783, 30187],
            [28784, 30183],
            [28785, 30211],
            [28786, 30193],
            [28787, 30204],
            [28788, 30207],
            [28789, 30224],
            [28790, 30208],
            [28791, 30213],
            [28792, 30220],
            [28793, 30231],
            [28794, 30218],
            [28795, 30245],
            [28796, 30232],
            [28797, 30229],
            [28798, 30233],
            [28961, 30235],
            [28962, 30268],
            [28963, 30242],
            [28964, 30240],
            [28965, 30272],
            [28966, 30253],
            [28967, 30256],
            [28968, 30271],
            [28969, 30261],
            [28970, 30275],
            [28971, 30270],
            [28972, 30259],
            [28973, 30285],
            [28974, 30302],
            [28975, 30292],
            [28976, 30300],
            [28977, 30294],
            [28978, 30315],
            [28979, 30319],
            [28980, 32714],
            [28981, 31462],
            [28982, 28983, 31352],
            [28984, 31360],
            [28985, 31366],
            [28986, 31368],
            [28987, 31381],
            [28988, 31398],
            [28989, 31392],
            [28990, 31404],
            [28991, 31400],
            [28992, 31405],
            [28993, 31411],
            [28994, 34916],
            [28995, 34921],
            [28996, 34930],
            [28997, 34941],
            [28998, 34943],
            [28999, 34946],
            [29000, 34978],
            [29001, 35014],
            [29002, 34999],
            [29003, 35004],
            [29004, 35017],
            [29005, 35042],
            [29006, 35022],
            [29007, 35043],
            [29008, 35045],
            [29009, 35057],
            [29010, 35098],
            [29011, 35068],
            [29012, 35048],
            [29013, 35070],
            [29014, 35056],
            [29015, 35105],
            [29016, 35097],
            [29017, 35091],
            [29018, 35099],
            [29019, 35082],
            [29020, 35124],
            [29021, 35115],
            [29022, 35126],
            [29023, 35137],
            [29024, 35174],
            [29025, 35195],
            [29026, 30091],
            [29027, 32997],
            [29028, 30386],
            [29029, 30388],
            [29030, 30684],
            [29031, 32786],
            [29032, 32788],
            [29033, 32790],
            [29034, 32796],
            [29035, 32800],
            [29036, 32802],
            [29037, 29039, 32805],
            [29040, 32809],
            [29041, 32808],
            [29042, 32817],
            [29043, 32779],
            [29044, 32821],
            [29045, 32835],
            [29046, 32838],
            [29047, 32845],
            [29048, 32850],
            [29049, 32873],
            [29050, 32881],
            [29051, 35203],
            [29052, 39032],
            [29053, 39040],
            [29054, 39043],
            [29217, 39049],
            [29218, 29219, 39052],
            [29220, 39055],
            [29221, 39060],
            [29222, 29223, 39066],
            [29224, 29225, 39070],
            [29226, 29227, 39073],
            [29228, 29229, 39077],
            [29230, 34381],
            [29231, 34388],
            [29232, 34412],
            [29233, 34414],
            [29234, 34431],
            [29235, 34426],
            [29236, 34428],
            [29237, 34427],
            [29238, 34472],
            [29239, 34445],
            [29240, 34443],
            [29241, 34476],
            [29242, 34461],
            [29243, 34471],
            [29244, 34467],
            [29245, 34474],
            [29246, 34451],
            [29247, 34473],
            [29248, 34486],
            [29249, 34500],
            [29250, 34485],
            [29251, 34510],
            [29252, 34480],
            [29253, 34490],
            [29254, 34481],
            [29255, 34479],
            [29256, 34505],
            [29257, 34511],
            [29258, 34484],
            [29259, 34537],
            [29260, 29261, 34545],
            [29262, 34541],
            [29263, 34547],
            [29264, 34512],
            [29265, 34579],
            [29266, 34526],
            [29267, 34548],
            [29268, 34527],
            [29269, 34520],
            [29270, 34513],
            [29271, 34563],
            [29272, 34567],
            [29273, 34552],
            [29274, 34568],
            [29275, 34570],
            [29276, 34573],
            [29277, 34569],
            [29278, 34595],
            [29279, 34619],
            [29280, 34590],
            [29281, 34597],
            [29282, 34606],
            [29283, 34586],
            [29284, 34622],
            [29285, 34632],
            [29286, 34612],
            [29287, 34609],
            [29288, 34601],
            [29289, 34615],
            [29290, 34623],
            [29291, 34690],
            [29292, 34594],
            [29293, 29294, 34685],
            [29295, 34683],
            [29296, 34656],
            [29297, 34672],
            [29298, 34636],
            [29299, 34670],
            [29300, 34699],
            [29301, 34643],
            [29302, 34659],
            [29303, 34684],
            [29304, 34660],
            [29305, 34649],
            [29306, 34661],
            [29307, 34707],
            [29308, 34735],
            [29309, 34728],
            [29310, 34770],
            [29473, 34758],
            [29474, 34696],
            [29475, 34693],
            [29476, 34733],
            [29477, 34711],
            [29478, 34691],
            [29479, 34731],
            [29480, 34789],
            [29481, 34732],
            [29482, 34741],
            [29483, 34739],
            [29484, 34763],
            [29485, 34771],
            [29486, 34749],
            [29487, 34769],
            [29488, 34752],
            [29489, 34762],
            [29490, 34779],
            [29491, 34794],
            [29492, 34784],
            [29493, 34798],
            [29494, 34838],
            [29495, 34835],
            [29496, 34814],
            [29497, 34826],
            [29498, 34843],
            [29499, 34849],
            [29500, 34873],
            [29501, 34876],
            [29502, 32566],
            [29503, 32578],
            [29504, 29505, 32580],
            [29506, 33296],
            [29507, 31482],
            [29508, 31485],
            [29509, 31496],
            [29510, 29511, 31491],
            [29512, 31509],
            [29513, 31498],
            [29514, 31531],
            [29515, 31503],
            [29516, 31559],
            [29517, 31544],
            [29518, 31530],
            [29519, 31513],
            [29520, 31534],
            [29521, 31537],
            [29522, 31520],
            [29523, 31525],
            [29524, 31524],
            [29525, 31539],
            [29526, 31550],
            [29527, 31518],
            [29528, 31576],
            [29529, 31578],
            [29530, 31557],
            [29531, 31605],
            [29532, 31564],
            [29533, 31581],
            [29534, 31584],
            [29535, 31598],
            [29536, 31611],
            [29537, 31586],
            [29538, 31602],
            [29539, 31601],
            [29540, 31632],
            [29541, 29542, 31654],
            [29543, 31672],
            [29544, 31660],
            [29545, 31645],
            [29546, 31656],
            [29547, 31621],
            [29548, 31658],
            [29549, 31644],
            [29550, 31650],
            [29551, 31659],
            [29552, 31668],
            [29553, 31697],
            [29554, 31681],
            [29555, 31692],
            [29556, 31709],
            [29557, 31706],
            [29558, 29559, 31717],
            [29560, 31722],
            [29561, 31756],
            [29562, 31742],
            [29563, 31740],
            [29564, 31759],
            [29565, 31766],
            [29566, 31755],
            [29729, 31775],
            [29730, 31786],
            [29731, 31782],
            [29732, 31800],
            [29733, 31809],
            [29734, 31808],
            [29735, 33278],
            [29736, 29737, 33281],
            [29738, 33284],
            [29739, 33260],
            [29740, 34884],
            [29741, 29743, 33313],
            [29744, 33325],
            [29745, 33327],
            [29746, 33320],
            [29747, 33323],
            [29748, 33336],
            [29749, 33339],
            [29750, 29751, 33331],
            [29752, 33342],
            [29753, 33348],
            [29754, 33353],
            [29755, 33355],
            [29756, 33359],
            [29757, 33370],
            [29758, 33375],
            [29759, 33384],
            [29760, 34942],
            [29761, 34949],
            [29762, 34952],
            [29763, 35032],
            [29764, 35039],
            [29765, 35166],
            [29766, 32669],
            [29767, 32671],
            [29768, 32679],
            [29769, 29770, 32687],
            [29771, 32690],
            [29772, 31868],
            [29773, 25929],
            [29774, 31889],
            [29775, 31901],
            [29776, 31900],
            [29777, 31902],
            [29778, 31906],
            [29779, 31922],
            [29780, 29781, 31932],
            [29782, 31937],
            [29783, 31943],
            [29784, 29785, 31948],
            [29786, 31944],
            [29787, 31941],
            [29788, 31959],
            [29789, 31976],
            [29790, 33390],
            [29791, 26280],
            [29792, 32703],
            [29793, 32718],
            [29794, 32725],
            [29795, 32741],
            [29796, 32737],
            [29797, 32742],
            [29798, 32745],
            [29799, 32750],
            [29800, 32755],
            [29801, 31992],
            [29802, 32119],
            [29803, 32166],
            [29804, 32174],
            [29805, 32327],
            [29806, 32411],
            [29807, 40632],
            [29808, 40628],
            [29809, 36211],
            [29810, 36228],
            [29811, 36244],
            [29812, 36241],
            [29813, 36273],
            [29814, 36199],
            [29815, 36205],
            [29816, 35911],
            [29817, 35913],
            [29818, 37194],
            [29819, 37200],
            [29820, 29821, 37198],
            [29822, 37220],
            [29985, 37218],
            [29986, 37217],
            [29987, 37232],
            [29988, 37225],
            [29989, 37231],
            [29990, 29991, 37245],
            [29992, 37234],
            [29993, 37236],
            [29994, 37241],
            [29995, 37260],
            [29996, 37253],
            [29997, 37264],
            [29998, 37261],
            [29999, 37265],
            [30000, 30001, 37282],
            [30002, 37290],
            [30003, 30005, 37293],
            [30006, 37301],
            [30007, 37300],
            [30008, 37306],
            [30009, 35925],
            [30010, 40574],
            [30011, 36280],
            [30012, 36331],
            [30013, 36357],
            [30014, 36441],
            [30015, 36457],
            [30016, 36277],
            [30017, 36287],
            [30018, 36284],
            [30019, 36282],
            [30020, 36292],
            [30021, 30022, 36310],
            [30023, 36314],
            [30024, 36318],
            [30025, 30026, 36302],
            [30027, 36315],
            [30028, 36294],
            [30029, 36332],
            [30030, 30031, 36343],
            [30032, 36323],
            [30033, 36345],
            [30034, 36347],
            [30035, 36324],
            [30036, 36361],
            [30037, 36349],
            [30038, 36372],
            [30039, 36381],
            [30040, 36383],
            [30041, 36396],
            [30042, 36398],
            [30043, 36387],
            [30044, 36399],
            [30045, 36410],
            [30046, 36416],
            [30047, 36409],
            [30048, 36405],
            [30049, 36413],
            [30050, 36401],
            [30051, 36425],
            [30052, 30053, 36417],
            [30054, 30055, 36433],
            [30056, 36426],
            [30057, 36464],
            [30058, 36470],
            [30059, 36476],
            [30060, 36463],
            [30061, 36468],
            [30062, 36485],
            [30063, 36495],
            [30064, 36500],
            [30065, 36496],
            [30066, 36508],
            [30067, 36510],
            [30068, 35960],
            [30069, 35970],
            [30070, 35978],
            [30071, 35973],
            [30072, 35992],
            [30073, 35988],
            [30074, 26011],
            [30075, 35286],
            [30076, 35294],
            [30077, 35290],
            [30078, 35292],
            [30241, 35301],
            [30242, 35307],
            [30243, 35311],
            [30244, 35390],
            [30245, 35622],
            [30246, 38739],
            [30247, 38633],
            [30248, 38643],
            [30249, 38639],
            [30250, 38662],
            [30251, 38657],
            [30252, 38664],
            [30253, 38671],
            [30254, 38670],
            [30255, 38698],
            [30256, 38701],
            [30257, 38704],
            [30258, 38718],
            [30259, 40832],
            [30260, 40835],
            [30261, 30266, 40837],
            [30267, 40844],
            [30268, 40702],
            [30269, 40715],
            [30270, 40717],
            [30271, 38585],
            [30272, 30273, 38588],
            [30274, 38606],
            [30275, 38610],
            [30276, 30655],
            [30277, 38624],
            [30278, 37518],
            [30279, 37550],
            [30280, 37576],
            [30281, 37694],
            [30282, 37738],
            [30283, 37834],
            [30284, 37775],
            [30285, 37950],
            [30286, 37995],
            [30287, 40063],
            [30288, 40066],
            [30289, 30292, 40069],
            [30293, 31267],
            [30294, 40075],
            [30295, 40078],
            [30296, 30298, 40080],
            [30299, 30300, 40084],
            [30301, 30302, 40090],
            [30303, 30308, 40094],
            [30309, 30313, 40101],
            [30314, 40107],
            [30315, 30316, 40109],
            [30317, 30324, 40112],
            [30325, 30328, 40122],
            [30329, 30332, 40132],
            [30333, 30334, 40138],
            [30497, 30501, 40140],
            [30502, 30504, 40147],
            [30505, 30507, 40151],
            [30508, 30509, 40156],
            [30510, 40159],
            [30511, 40162],
            [30512, 38780],
            [30513, 38789],
            [30514, 30515, 38801],
            [30516, 38804],
            [30517, 38831],
            [30518, 38827],
            [30519, 38819],
            [30520, 38834],
            [30521, 38836],
            [30522, 39601],
            [30523, 39600],
            [30524, 39607],
            [30525, 40536],
            [30526, 39606],
            [30527, 39610],
            [30528, 39612],
            [30529, 39617],
            [30530, 39616],
            [30531, 39621],
            [30532, 39618],
            [30533, 30534, 39627],
            [30535, 39633],
            [30536, 39749],
            [30537, 39747],
            [30538, 39751],
            [30539, 39753],
            [30540, 39752],
            [30541, 39757],
            [30542, 39761],
            [30543, 39144],
            [30544, 39181],
            [30545, 39214],
            [30546, 39253],
            [30547, 39252],
            [30548, 39647],
            [30549, 39649],
            [30550, 39654],
            [30551, 39663],
            [30552, 39659],
            [30553, 39675],
            [30554, 39661],
            [30555, 39673],
            [30556, 39688],
            [30557, 39695],
            [30558, 39699],
            [30559, 39711],
            [30560, 39715],
            [30561, 30562, 40637],
            [30563, 32315],
            [30564, 40578],
            [30565, 30566, 40583],
            [30567, 40587],
            [30568, 40594],
            [30569, 37846],
            [30570, 40605],
            [30571, 40607],
            [30572, 30574, 40667],
            [30575, 40672],
            [30576, 40671],
            [30577, 40674],
            [30578, 40681],
            [30579, 40679],
            [30580, 40677],
            [30581, 40682],
            [30582, 40687],
            [30583, 40738],
            [30584, 40748],
            [30585, 40751],
            [30586, 40761],
            [30587, 40759],
            [30588, 30589, 40765],
            [30590, 40772]
        ]
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.constants = {
        open_after_install_page: "always",
        after_install_page: "http://taoassistant.com/",
        after_install_page_zh: "http://ruyi.etao.com/extension/ruyitao",
        renren_page: "http://page.renren.com/698000090",
        ga_account: "UA-15655963-10",
        cache_size: 70,
        cache_expire_time: 3600 * 2,
        site_config: {
            book: {
                "product.dangdang.com": {
                    index: 1,
                    patterns: [{
                        url: "product.aspx(?:\\?|.+&)product_id=(?:\\d+)",
                        meta: {
                            isbn: [{
                                xpath: ".book_detailed li span",
                                regexp: "I S B N\uff1a(\\w+)"
                            }],
                            author: [{
                                xpath: ".book_detailed p",
                                regexp: "\u4f5c\u3000\u3000\u8005\uff1a[^<]*<a [^>]+>([^<]+)<"
                            }],
                            price: [{
                                xpath: ".book_r .price_d span",
                                regexp: "\uffe5([\\d\\.]+)"
                            }]
                        }
                    }]
                },
                "book.360buy.com": {
                    index: 2,
                    patterns: [{
                        url: ".",
                        meta: {
                            isbn: [{
                                xpath: "#summary li",
                                regexp: "\uff29\uff33\uff22\uff2e\uff1a</span>(\\w+)"
                            }],
                            author: [{
                                xpath: "#summary li",
                                regexp: "\u4f5c\u3000\u3000\u8005\uff1a[\\s\\S]+?<a [^>]+>(?:\\[[^\\]]+\\]\\s*)?([^<]+)<"
                            }],
                            price: [{
                                xpath: "#priceinfo",
                                regexp: "([\\d\\.]+)"
                            }]
                        }
                    }]
                },
                "book.douban.com": {
                    index: 3,
                    patterns: [{
                        url: ".",
                        meta: {
                            isbn: [{
                                xpath: "#info",
                                regexp: "ISBN:</span>\\s+(\\w+)"
                            }],
                            author: [{
                                xpath: "#info",
                                regexp: "\u4f5c\u8005</span>[^<]+<a [^>]+>(?:\\[[^\\]]+\\]\\s*)?([^<]+)<"
                            }],
                            price: [{
                                xpath: "#info",
                                regexp: "\u5b9a\u4ef7:</span>\\s*([\\d\\.]+)"
                            }]
                        }
                    }]
                },
                "www.amazon.cn": {
                    index: 4,
                    patterns: [{
                        url: /(\/(?:dp|dp\/product|-|o\/asin|ASIN|gp\/product)\/+([0-9A-Za-z]{10})(\/|\?|$|%3F|#)|asin=([0-9A-Za-z]{10}))/,
                        meta: {
                            isbn: [{
                                xpath: "table .content li",
                                regexp: "ISBN:</b>\\s+(\\w+)"
                            }],
                            author: [{
                                xpath: "#handleBuy .buying",
                                regexp: "<a[^>]+>([^<]+)</a> \\(\u4f5c\u8005\\)"
                            }],
                            price: [{
                                xpath: ".priceLarge",
                                regexp: "([\\d\\.]+)"
                            }]
                        }
                    }]
                },
                "item.taobao.com": {
                    index: 5,
                    patterns: [{
                        url: ".",
                        meta: {
                            isbn: [{
                                xpath: "#attributes .attributes-list",
                                regexp: "ISBN[^><]*?:&nbsp;(\\w+)"
                            }],
                            author: [{
                                xpath: "#attributes .attributes-list",
                                regexp: "\u4f5c\u8005:&nbsp;([^<]+?)(?:\\s*\u8457)?<"
                            }],
                            price: [{
                                xpath: "#J_StrPriceModBox",
                                regexp: "([\\d.]+)"
                            }]
                        }
                    }]
                },
                "item.tmall.com": {
                    index: 5,
                    patterns: [{
                        url: ".",
                        meta: {
                            isbn: [{
                                xpath: "#attributes .attributes-list",
                                regexp: "ISBN[^><]*?:&nbsp;(\\w+)"
                            }],
                            author: [{
                                xpath: "#attributes .attributes-list",
                                regexp: "\u4f5c\u8005:&nbsp;([^<]+?)(?:\\s*\u8457)?<"
                            }],
                            price: [{
                                xpath: "#J_StrPriceModBox",
                                regexp: "([\\d.]+)"
                            }]
                        }
                    }]
                }
            },
            product: {
                "360buy.com": 1,
                "99read.com": 1,
                "amazon.cn": 1,
                "beifabook.com": 1,
                "bookschina.com": 1,
                "bookuu.com": 1,
                "china-pub.com": 1,
                "coo8.com": 1,
                "dangdang.com": 1,
                "newegg.com.cn": 1,
                "tao3c.com": 1,
                "icson.com": 1,
                "51buy.com": 1,
                "suning.com": 1,
                "taobao.com": ["http://item.taobao.com/auction/item_detail", "http://item.taobao.com/item.htm"],
                "tmall.com": ["http://item.tmall.com/item.htm", "http://list.3c.tmall.com/spu-", "http://spu.tmall.com/spu-", "http://detail.tmall.com"]
            },
            search: {
                zh: {
                    "etao.com": {
                        ruyi: [{
                            d: "&",
                            k: "testkeyword",
                            s: ""
                        }]
                    },
                    "360buy.com": {
                        search: [{
                            k: "keyword",
                            d: "&",
                            s: ""
                        }]
                    },
                    "dangdang.com": {
                        search: [{
                            k: "key",
                            d: "&",
                            s: ""
                        }, {
                            k: "q",
                            d: "&",
                            s: ""
                        }]
                    },
                    "taobao.com": {
                        list: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        "list.mall": [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        "list.3c": [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        s: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        s8: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        search: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        "try": [{
                            k: "",
                            d: "",
                            s: "J_TrialKeyword",
                            sk: "\u8bf7\u8f93\u5165\u641c\u7d22\u6761\u4ef6"
                        }]
                    },
                    "tmall.com": {
                        list: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        "list.3c": [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        "list.xie": [{
                            k: "q",
                            d: "&",
                            s: ""
                        }]
                    }
                },
                en: {
                    "ebay.com": {
                        "search.half": [{
                            k: "",
                            d: "",
                            s: "query"
                        }],
                        shop: [{
                            k: "_nkw",
                            d: "&",
                            s: ""
                        }]
                    },
                    "google.com": {
                        www: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }, {
                            k: "q",
                            d: "&",
                            s: ""
                        }, {
                            k: "query",
                            d: "&",
                            s: ""
                        }],
                        books: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        encrypted: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }, {
                            k: "query",
                            d: "&",
                            s: ""
                        }]
                    },
                    "bing.com": {
                        www: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }],
                        DUMMY: [{
                            k: "q",
                            d: "&",
                            s: ""
                        }]
                    },
                    "barnesandnoble.com": {
                        productsearch: [{
                            k: "WRD",
                            d: "&",
                            s: ""
                        }]
                    },
                    "fatwallet.com": {
                        www: [{
                            k: "query",
                            d: "&",
                            s: ""
                        }, {
                            k: "search",
                            d: "&",
                            s: ""
                        }]
                    },
                    "slickdeals.net": {
                        DUMMY: [{
                            k: "search",
                            d: "&",
                            s: ""
                        }, {
                            k: "q",
                            d: "&",
                            s: ""
                        }]
                    },
                    "bestbuy.com": {
                        www: [{
                            k: "st",
                            d: "&",
                            s: ""
                        }, {
                            k: "searchterm",
                            d: "&",
                            s: ""
                        }]
                    },
                    "walmart.com": {
                        www: [{
                            k: "search_query",
                            d: "&",
                            s: ""
                        }, {
                            k: "redirect_query",
                            d: "&",
                            s: ""
                        }]
                    }
                }
            }
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (c, f) {
    var a = ["TRACE", "DEBUG", "INFO", "WARN", "ERROR"];
    var e = {};
    for (var b = 0; b < a.length; b++) {
        e[a[b]] = b
    }
    var g = e.WARN;
    c.console = {
        setLevel: function (h) {
            if (h in e) {
                g = e[h]
            }
        },
        getLevel: function () {
            return a[g]
        },
        log: function (h) {
            console.log(h)
        },
        trace: function (h) {
            d(h, e.TRACE)
        },
        debug: function (h) {
            d(h, e.DEBUG)
        },
        info: function (h) {
            d(h, e.INFO)
        },
        warn: function (h) {
            d(h, e.WARN)
        },
        error: function (h) {
            d(h, e.ERROR)
        }
    };
    var d = function (k, h) {
        if (h >= g) {
            var i = new Date();
            var j = function (l) {
                return ((l < 10) ? "0" : "") + l
            };
            k = i.getFullYear() + "-" + j(i.getMonth() + 1) + "-" + j(i.getDate()) + " " + j(i.getHours()) + ":" + j(i.getMinutes()) + ":" + j(i.getSeconds()) + " [" + a[h] + "]" + k;
            switch (h) {
                case e.trace:
                    console.trace(k);
                    break;
                case e.DEBUG:
                    console.debug(k);
                    break;
                case e.INFO:
                    console.info(k);
                    break;
                case e.WARN:
                    console.warn(k);
                    break;
                case e.ERROR:
                    console.error(k);
                    break
            }
        }
    }
})(exports);
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.extend = function (g, c, e, h) {
        if (!g || !c) {
            return g
        }
        if (e === b) {
            e = true
        }
        var f, j, d;
        if (h && (d = h.length)) {
            for (f = 0; f < d; f++) {
                j = h[f];
                if ((j in c) && (e || !(j in g))) {
                    g[j] = c[j]
                }
            }
        } else {
            for (j in c) {
                if (e || !(j in g)) {
                    g[j] = c[j]
                }
            }
        }
        return g
    };
    a.filter_int = function (e, f, d, c) {
        e = parseInt(e);
        if (isNaN(e) || (typeof d != "undefined" && e < d) || (typeof c != "undefined" && e > c)) {
            return f
        } else {
            return e
        }
    };
    a.is_empty = function (c) {
        if (typeof c != "object") {
            return !c
        }
        for (var d in c) {
            if (c.hasOwnProperty(d)) {
                return false
            }
        }
        return true
    };
    a.is_array = function (c) {
        return c && typeof c == "object" && typeof c.unshift == "function"
    };
    a.trim = function (c) {
        return (c || "").replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, "")
    };
    a.cut_string = function (e, c, d) {
        if (typeof d == "undefined") {
            d = "..."
        }
        if (e.length > c) {
            e = e.substr(0, c - d.length) + d
        }
        return e
    };
    a.get_random_string = function () {
        return Math.floor(Math.random() * 2147483648).toString(36) + (Math.floor(Math.random() * 2147483648) ^ (new Date).getTime()).toString(36)
    };
    a.htmlspecialchars = function (c) {
        return (c || "").replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
    };
    a.htmlspecialchars_decode = function (c) {
        return (c || "").replace(/&quot;/g, '"').replace(/&#39;/g, "'").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&amp;/g, "&")
    };
    a.strip_tags = function (e, c) {
        var d;
        if (typeof c == "undefined") {
            d = "<\\/?\\w+[^>]*>"
        } else {
            if (typeof c == "string") {
                c = c.split(",")
            }
            d = "<\\/?(" + c.join("|") + ")[^>]*>"
        }
        return e.replace(new RegExp(d, "g"), " ").replace(/<!--[\s\S]+?-->/g, "").replace(/\s+/g, " ")
    };
    a.str_repeat = function (d, c) {
        for (var e = []; c > 0; e[--c] = d) { }
        return e.join("")
    };
    a.sprintf = function () {
        var h = 0,
            l, j = arguments[h++],
            e = [],
            g, d, k, n, q = "";
        while (j) {
            if (g = /^[^\x25]+/.exec(j)) {
                e.push(g[0])
            } else {
                if (g = /^\x25{2}/.exec(j)) {
                    e.push("%")
                } else {
                    if (g = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(j)) {
                        if (((l = arguments[g[1] || h++]) == null) || (l == b)) {
                            throw ("Too few arguments.")
                        }
                        if (/[^s]/.test(g[7]) && (typeof (l) != "number")) {
                            throw ("Expecting number but found " + typeof (l))
                        }
                        switch (g[7]) {
                            case "b":
                                l = l.toString(2);
                                break;
                            case "c":
                                l = String.fromCharCode(l);
                                break;
                            case "d":
                                l = parseInt(l);
                                break;
                            case "e":
                                l = g[6] ? l.toExponential(g[6]) : l.toExponential();
                                break;
                            case "f":
                                l = g[6] ? parseFloat(l).toFixed(g[6]) : parseFloat(l);
                                break;
                            case "o":
                                l = l.toString(8);
                                break;
                            case "s":
                                l = ((l = String(l)) && g[6] ? l.substring(0, g[6]) : l);
                                break;
                            case "u":
                                l = Math.abs(l);
                                break;
                            case "x":
                                l = l.toString(16);
                                break;
                            case "X":
                                l = l.toString(16).toUpperCase();
                                break
                        }
                        l = (/[def]/.test(g[7]) && g[2] && l >= 0 ? "+" + l : l);
                        k = g[3] ? g[3] == "0" ? "0" : g[3].charAt(1) : " ";
                        n = g[5] - String(l).length - q.length;
                        d = g[5] ? a.str_repeat(k, n) : "";
                        e.push(q + (g[4] ? l + d : d + l))
                    } else {
                        throw ("Huh ?!")
                    }
                }
            }
            j = j.substring(g[0].length)
        }
        return e.join("")
    };
    a.http_build_query = function (d, h, c) {
        var g, f, e = [];
        var i = function (n, o, j) {
            var l, m = [];
            if (o === true) {
                o = "1"
            } else {
                if (o === false) {
                    o = "0"
                }
            }
            if (o !== null && typeof (o) === "object") {
                for (l in o) {
                    if (o[l] !== null) {
                        m.push(i(n + "[" + l + "]", o[l], j))
                    }
                }
                return m.join(j)
            } else {
                if (typeof (o) !== "function") {
                    return encodeURIComponent(n) + "=" + encodeURIComponent(o)
                } else {
                    throw new Error("There was an error processing for http_build_query().")
                }
            }
        };
        if (!c) {
            c = "&"
        }
        for (f in d) {
            g = d[f];
            if (h && !isNaN(f)) {
                f = String(h) + f
            }
            e.push(i(f, g, c))
        }
        return e.join(c)
    };
    a.parse_url = function (h, d) {
        var g = {
            strictMode: false,
            key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
            q: {
                name: "queryKey",
                parser: /(?:^|&)([^&=]*)=?([^&]*)/g
            },
            parser: {
                strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
                loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
            }
        };
        var c = g.parser[g.strictMode ? "strict" : "loose"].exec(h),
            f = {},
            e = 14;
        while (e--) {
            f[g.key[e]] = c[e] || ""
        }
        switch (d) {
            case "PHP_URL_SCHEME":
                return f.protocol;
            case "PHP_URL_HOST":
                return f.host;
            case "PHP_URL_PORT":
                return f.port;
            case "PHP_URL_USER":
                return f.user;
            case "PHP_URL_PASS":
                return f.password;
            case "PHP_URL_PATH":
                return f.path;
            case "PHP_URL_QUERY":
                return f.query;
            case "PHP_URL_FRAGMENT":
                return f.anchor;
            default:
                var j = {};
                if (f.protocol !== "") {
                    j.scheme = f.protocol
                }
                if (f.host !== "") {
                    j.host = f.host
                }
                if (f.port !== "") {
                    j.port = f.port
                }
                if (f.user !== "") {
                    j.user = f.user
                }
                if (f.password !== "") {
                    j.pass = f.password
                }
                if (f.path !== "") {
                    j.path = f.path
                }
                if (f.query !== "") {
                    j.query = f.query
                }
                if (f.anchor !== "") {
                    j.fragment = f.anchor
                }
                return j
        }
    };
    a.parse_query = function (h) {
        var d = "=";
        var j = "&";
        var i = {};
        var f = (h + "").split(j);
        var g = 0,
            e = "",
            c = 0;
        g = f.length;
        for (c = 0; c < g; c++) {
            e = f[c].split(d);
            i[unescape(e[0])] = unescape(e[1]).replace(/[+]/g, " ")
        }
        return i
    };
    a.xhr = function () {
        return new XMLHttpRequest()
    };
    a.ajax = function (g) {
        var d = a.console || {
            debug: function () { }
        };
        g = a.extend((g || {}), {
            type: "GET"
        }, false);
        if (typeof g.url == "undefined") {
            return b
        }
        var f = g.type.toUpperCase();
        if (g.data && typeof g.data != "string") {
            g.data = a.http_build_query(g.data);
            if (f == "GET") {
                g.url += (g.url.match(/\?/) ? "&" : "?") + g.data;
                g.data = null
            } else {
                g.contentType = "application/x-www-form-urlencoded"
            }
        }
        var c = g.error || a.ajax.error_handler;
        var i = a.xhr();
        d.debug(f + ": " + g.url);
        i.open(f, g.url, true);
        i.onreadystatechange = function () {
            if (i.readyState == 4) {
                if (i.status == 200) {
                    if (g.dataType && g.dataType == "xml") {
                        g.success(i.responseXML, i.status, i)
                    } else {
                        if (g.dataType && g.dataType == "text") {
                            g.success(i.responseText, i.status, i)
                        } else {
                            var j;
                            try {
                                j = JSON.parse(i.responseText)
                            } catch (k) {
                                if (c) {
                                    c(i, i.status, k)
                                }
                                return
                            }
                            g.success(j, i.status, i)
                        }
                    }
                } else {
                    if (c) {
                        c(i, i.status)
                    }
                }
            }
        };
        if (g.dataType == "text" && i.overrideMimeType) {
            i.overrideMimeType("text/plain")
        }
        i.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if (g.contentType) {
            i.setRequestHeader("Content-Type", g.contentType)
        }
        try {
            if (g.data) {
                d.debug("form data: " + g.data)
            }
            i.send(g.data)
        } catch (h) {
            if (c) {
                c(i, null, h)
            }
        }
        return i
    };
    a.format_price = function (d, c) {
        d = parseInt(d);
        if (isNaN(d) || d <= 0) {
            return ""
        }
        var e;
        var f = a.sprintf("%.2f", d / 100);
        switch (c) {
            case "us":
                e = "$" + f;
                break;
            case "ca":
                e = "CDN$" + f;
                break;
            case "fr":
            case "de":
                e = "EUR " + f.replace(".", ",");
                break;
            case "uk":
                e = "&#xA3;" + f;
                break;
            default:
                e = "$" + f
        }
        return e
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (b, c) {
    var a = b.console || {
        debug: function () { }
    };
    b.localStorage = {
        getItem: function (d) {
            return localStorage.getItem(d)
        },
        setItem: function (d, e) {
            return localStorage.setItem(d, e)
        },
        hasItem: function (d) {
            return localStorage.getItem(d) !== null
        },
        removeItem: function (d) {
            return localStorage.removeItem(d)
        },
        each: function (f) {
            for (var e = localStorage.length; e--; ) {
                var d = localStorage.key(e);
                f(d, localStorage.getItem(d))
            }
        }
    };
    b.storage = function (d, e) {
        this.setNamespace(d);
        this.setStorage(e)
    };
    b.storage.prototype = {
        seperator: "/",
        setStorage: function (d) {
            this.storage = (typeof d == "undefined" ? b.localStorage : d)
        },
        getStorage: function () {
            return this.storage
        },
        setNamespace: function (d) {
            this.namespace = String(d || "")
        },
        getNamespace: function () {
            return this.namespace
        },
        getKey: function (d) {
            return (this.namespace ? this.namespace + this.seperator : this.namespace) + d
        },
        has: function (d) {
            return this.storage.hasItem(this.getKey(d))
        },
        get: function (d) {
            return this.storage.getItem(this.getKey(d))
        },
        set: function (d, e) {
            return this.storage.setItem(this.getKey(d), e)
        },
        remove: function (d) {
            return this.storage.removeItem(this.getKey(d))
        },
        has_object: function (d) {
            return this.has(d)
        },
        get_object: function (d) {
            var f = this.get(d);
            try {
                return typeof f == "string" ? JSON.parse(f) : null
            } catch (g) {
                return null
            }
        },
        set_object: function (d, e) {
            return this.set(d, JSON.stringify(e))
        },
        remove_object: function (d) {
            return this.remove(d)
        },
        clear: function () {
            var d = this;
            this.each(function (e) {
                d.remove(e)
            })
        },
        each: function (e) {
            var d = this.getKey("");
            this.storage.each(function (f, g) {
                if (f.indexOf(d) == 0) {
                    e(f.substr(d.length))
                } else { }
            })
        },
        keys: function () {
            var d = [];
            this.each(function (e) {
                d.push(e)
            });
            return d
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.cache = function (c) {
        c = c || {};
        this.max_size = c.max_size || 50;
        this.expire_time = c.expire_time || 3600;
        this.storage = c.storage || new a.storage("cache");
        this.fill_factor = c.fill_factor || 0.62;
        this._count = 0
    };
    a.cache.prototype = {
        has: function (c) {
            return this._get_item(c) != null
        },
        get: function (d) {
            var e = this._get_item(d);
            var c = a.console || {
                debug: function () { }
            };
            if (e != null) {
                c.debug("CACHE hit " + d);
                return e.value
            } else {
                c.debug("CACHE miss " + d);
                return null
            }
        },
        set: function (d, e, c) {
            if (d == null || d == "") {
                throw new Error("key cannot be null or empty")
            }
            if (typeof c == "undefined") {
                c = {}
            }
            if (typeof c.expire_time == "undefined") {
                c.expire_time = this.expire_time
            }
            c.expire_time = new Date().getTime() + c.expire_time * 1000;
            if (!this.storage.has_object(d)) {
                this._count++
            }
            this.storage.set_object(d, {
                value: e,
                key: d,
                options: c
            });
            if (this.max_size > 0 && (this._count > this.max_size)) {
                this._purge()
            }
        },
        clear: function () {
            this.storage.clear()
        },
        remove: function (c) {
            if (!this.storage.has_object(c)) {
                return
            }
            var d = this.storage.get_object(c);
            this.storage.remove_object(c);
            if (this._count > 0) {
                this._count--
            }
            if (d.options.callback != null) {
                var e = function () {
                    d.options.callback(d.key, d.value)
                };
                setTimeout(e, 0)
            }
        },
        _is_expired: function (c) {
            return c.options.expire_time && c.options.expire_time < (new Date()).getTime()
        },
        _get_item: function (c) {
            var d = this.storage.get_object(c);
            if (d != null) {
                if (typeof d.options == "undefined") {
                    this.storage.remove_object(c);
                    d = null
                } else {
                    if (this._is_expired(d)) {
                        this.remove(c);
                        d = null
                    }
                }
            }
            return d
        },
        _purge: function () {
            var g = Math.floor(this.max_size * this.fill_factor);
            if (g <= 0) {
                return
            }
            var f = this._count - g;
            if (f <= 0) {
                return
            }
            var e = [];
            this.storage.each(function (h) {
                e.push(h)
            });
            var d = function (k) {
                var l, h;
                for (var m = k.length - 1; m; m--) {
                    l = Math.floor(Math.random() * m + 1);
                    h = k[m];
                    k[m] = k[l];
                    k[l] = h
                }
            };
            d(e);
            for (var c = 0; c < f; c++) {
                this.remove(e[c])
            }
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.site = {
        cache: b,
        storage: b,
        key_config: "site_config",
        key_status: "site_status",
        loading_status: -1,
        default_status: false,
        init: function (c) {
            c = c || {};
            this.storage = c.storage;
            this.cache = c.cache;
            this.default_status = !!c.status
        },
        getConfig: function (h, g) {
            var e = this.cache;
            var c = a.options.get_locale();
            var d = this;
            var f;
            if (this.loading_status == -1) {
                if (e.has(this.key_config)) {
                    a.constants.site_config = e.get(this.key_config);
                    this.loading_status = 1
                } else {
                    this.loading_status = 0;
                    a.ajax({
                        url: a.options.get_api_url() + "/ext/siteconfig",
                        data: {
                            locale: c,
                            version: a.constants.version,
                            pid: a.constants.pid,
                            uid: a.constants.uid
                        },
                        success: function (j, i, k) {
                            this.loading_status = 1;
                            a.constants.site_config = j;
                            e.set(d.key_config, j);
                            if (g && g.success) {
                                g.success(j, i, k)
                            }
                        },
                        error: function (k, i, j) {
                            a.console.error("get site config failed: " + (i ? "status code(" + i + ")" : (j || "Unknown Error")));
                            if (g && g.error) {
                                g.error(k, i, j)
                            }
                        }
                    })
                }
            }
            f = a.constants.site_config.search;
            if (f.hasOwnProperty(c)) {
                f = f[c]
            } else {
                f = f.en
            }
            return f[h]
        },
        _getStatusKey: function (c) {
            return ((typeof c == "undefined" || !c) ? "" : c) + this.key_status
        },
        getStatus: function (d, c) {
            var e = this.storage.get_object(this._getStatusKey(c)) || {};
            return typeof e[d] != "undefined" ? e[d] : this.default_status
        },
        setStatus: function (f, c, e) {
            var d = this._getStatusKey(e),
                g = this.storage.get_object(d) || {};
            g[f] = c;
            this.storage.set_object(d, g)
        },
        clearStatus: function (d) {
            var c = this._getStatusKey(d);
            this.storage.set_object(c, {})
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (b, d) {
    var a = {};
    var c = function (e, f) {
        if (!a.hasOwnProperty(e)) {
            a[e] = f()
        }
        return a[e]
    };
    b.factory = {};
    b.factory.init = function (e) {
        e = e || {};
        b.factory.storage = e.storage
    };
    b.factory.getStorage = function (e) {
        return new b.storage(e, b.factory.storage)
    };
    b.factory.getCache = function () {
        return c("cache", function () {
            var e = new b.cache({
                max_size: b.constants.cache_size,
                expire_time: b.constants.cache_expire_time,
                storage: b.factory.getStorage("cache")
            });
            var f = 0;
            e.storage.each(function () {
                f++
            });
            e._count = f;
            return e
        })
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.options = {
        _locales: {
            zh: true,
            us: true,
            uk: true,
            de: true,
            it: true,
            fr: true,
            ca: true
        },
        _locale: b,
        init: function (c) {
            c = c || {};
            this.storage = c.storage;
            if (!this._get("locale")) {
                this.set_locale(c.locale)
            }
        },
        get_api_url: function (c) {
            return (c || this._get("locale")) == "zh" ? "http://ruyi.etao.com" : "http://taoassistant.com"
        },
        has_locale: function (c) {
            return c in this._locales
        },
        get_locale: function () {
            if (typeof this._locale == "undefined") {
                var c = this._get("locale");
                this._locale = (c in this._locales ? c : "us")
            }
            return this._locale
        },
        set_locale: function (c) {
            if (!(c in this._locales)) {
                c = "us"
            }
            this._locale = c;
            return this._set("locale", c)
        },
        set_search_engine: function (c) {
            this.storage.set_object("search_engine", c)
        },
        get_search_engine: function () {
            return this.storage.get_object("search_engine") || {}
        },
        set_accept_term: function (c) {
            return this.storage.set("accept_term", c)
        },
        get_accept_term: function () {
            return this.storage.get("accept_term") == "1"
        },
        get_search_result_setting: function () {
            return this._get("search_result_setting") == "true"
        },
        set_search_result_setting: function (c) {
            return this._set("search_result_setting", String(c))
        },
        _get: function (c) {
            return this.storage.get(c)
        },
        _set: function (c, d) {
            return this.storage.set(c, d)
        },
        get: function (d, e) {
            var c;
            if (typeof this["get_" + d] == "function") {
                c = this["get_" + d]()
            } else {
                c = this._get(d)
            }
            return c || e
        },
        set: function (e, f) {
            if (typeof this["set_" + e] == "function") {
                var c = [];
                for (var d = 1; d < arguments.length; d++) {
                    c[d - 1] = arguments[d]
                }
                return this["set_" + e].apply(this, c)
            } else {
                return this._set(e, f)
            }
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, c) {
    var b = {
        search_engines: {}
    };
    b.search_url = function (e) {
        if (e.encoding == "gb") {
            e.Keyword = a.encode.gb2312.encode(e.Keyword)
        } else {
            e.Keyword = encodeURIComponent(e.Keyword)
        }
        if (typeof e.urlfunc != "undefined") {
            var d = e.urlfunc(e, exports);
            if (d) {
                e.callback(d)
            }
        } else {
            if (typeof e.url != "undefined") {
                e.K = e.Keyword;
                e.P = e.ItemPage;
                e.A = a.constants.application;
                e.F = a.constants.pid;
                var d = e.url.replace(/{(\w+)}/g, function (g, f) {
                    return typeof e[f] != "undefined" ? e[f] : ""
                });
                e.callback(d)
            }
        }
    };
    b.get_match = function (f, e) {
        if (typeof e.exec == "function") {
            var d = e.exec(f);
            if (d) {
                return d[1]
            }
        } else {
            if (typeof e == "function") {
                return e(f)
            } else {
                var d = e[0].exec(f);
                if (d) {
                    return d[e[1]]
                }
            }
        }
        return null
    };
    b.parse_item = function (g, f) {
        var h = {};
        if (typeof f.valid == "function" && !f.valid(g)) {
            return null
        }
        for (var e in f) {
            if (e == "valid") {
                continue
            }
            var d = b.get_match(g, f[e]) || "";
            if (d && typeof d == "object") {
                a.extend(h, d)
            } else {
                h[e] = d
            }
        }
        if (!h.ASIN) {
            return null
        }
        return h
    };
    b.parse = function (h, f) {
        var g = {
            TotalPages: 0,
            Items: []
        };
        if ((g.TotalPages = b.get_match(h, f.total_pages)) > 0) {
            var e = c;
            var d;
            var i;
            while ((d = f.separator.exec(h)) != null) {
                var j = d.index;
                if (e) {
                    i = b.parse_item(h.substr(e, j - e + 1), f.item);
                    if (i) {
                        g.Items.push(i)
                    }
                }
                e = j
            }
            if (e) {
                i = b.parse_item(h.substr(e), f.item);
                if (i) {
                    g.Items.push(i)
                }
            }
        } else {
            a.console.debug("page not match")
        }
        return g
    };
    b.click_url = function (d) {
        return a.options.get_api_url() + "/ext/clickurl?url=" + encodeURIComponent(d) + "&pid=" + a.constants.pid
    };
    b.add_css_prefix = function (e, d) {
        if (typeof d == "undefined") {
            d = "ruyitao-"
        }
        return e.replace(/class="([^"]+)"/g, function (h, g) {
            var g = g.split(/\s+/);
            for (var f = 0; f < g.length; f++) {
                g[f] = d + g[f]
            }
            return 'class="' + g.join(" ") + '"'
        })
    };
    b.install = function (d) {
        try {
            if (typeof d.name == "undefined") {
                throw Error("Search engine name not defined")
            }
            if (typeof d.urlfunc == "undefined") {
                if (typeof d.url == "undefined") {
                    throw Error("Search engine url not defined")
                }
            } else {
                d.urlfunc = new Function("options,exports", d.urlfunc)
            }
            d.selected = (typeof d.selected == "undefined") || (d.selected == 1);
            d.enabled = (d.enabled == 1);
            d.submit_data = (d.submit_data == 1);
            d.order = parseInt(d.order);
            if (d.enabled) {
                if (typeof d.title == "undefined") {
                    throw Error("Search engine title not defined")
                }
            }
            if (typeof d.parse == "undefined") {
                d.parse = function (g, e) {
                    return JSON.parse(g)
                }
            } else {
                if (typeof d.parse == "function") { } else {
                    d.parse = new Function("html, exports", d.parse)
                }
            }
            b.search_engines[d.name] = d
        } catch (f) {
            a.console.error("install search engine " + d.name + " failed: " + f.message)
        }
    };
    b.init = function (g) {
        var d = a.factory.getCache();
        var f = function (j) {
            b.search_engines = {};
            for (var h = 0; h < j.length; h++) {
                b.install(j[h])
            }
            if (typeof g == "function") {
                g()
            }
        };
        var e = d.get("search_engines");
        if (e) {
            f(e)
        } else {
            f(b._search_engines);
            a.ajax({
                url: a.options.get_api_url() + "/ext/searchengines",
                data: {
                    version: a.constants.version,
                    application: a.constants.application,
                    pid: a.constants.pid,
                    locale: a.options.get_locale()
                },
                dataType: "json",
                success: function (h) {
                    d.set("search_engines", h);
                    f(h)
                },
                error: function () {
                    setTimeout(function () {
                        b.init()
                    }, 3600 * 1000)
                }
            })
        }
    };
    b.search = function (f, e, g) {
        if (typeof b.search_engines[f] == "undefined") {
            g.error(null, null, "Unknown search engine");
            return
        }
        var d = b.search_engines[f];
        e.callback = function (h) {
            a.ajax({
                url: h,
                dataType: "text",
                success: function (j) {
                    e.callbacks = {
                        success: function (k) {
                            g.success(k);
                            b.submit(d, h, k)
                        },
                        error: g.error
                    };
                    b.options = e;
                    var i = d.parse(j, exports);
                    if (i) {
                        e.callbacks.success(i)
                    }
                },
                error: g.error
            })
        };
        if (d.urlfunc) {
            e.urlfunc = d.urlfunc
        } else {
            e.url = d.url
        }
        e.encoding = d.encoding;
        b.search_url(e)
    };
    b.has = function (d) {
        return d in b.search_engines
    };
    b.submit = function (d, e, f) {
        if (!d.submit_data) {
            return
        }
        if (typeof f != "object" || typeof f.Items != "object" || typeof f.Items.length == "undefined" || f.Items.length == 0) {
            return
        }
        f.source_url = e;
        a.ajax({
            url: "http://ruyi.etao.com/ext/submit",
            data: {
                uid: a.constants.uid,
                data: JSON.stringify(f)
            },
            type: "post"
        })
    };
    b._search_engines = [{
        name: "amazon",
        locales: "us",
        encoding: "def",
        enabled: "1",
        order: "1",
        parse: function (k, g) {
            var f = g;
            var d;
            if (k.match(/id="resultCount"/)) {
                d = {
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="newPrice">[\s\S]+?<span(?: class="price")?>(.*?)<\/span>/,
                        UsedPrice: /class="newPrice">[\s\S]+?<strike>(.*?)<\/strike>/,
                        FastTrack: /<div class="fastTrack"[^>]*>([\s\S]+?)<\/div>/,
                        Stars: /class="stars">[\s\S]+?(<a[\s\S]+?<\/a>)/
                    },
                    total_pages: function (o) {
                        var i = o.match(/id="resultCount"[\s\S]+?([\d,]+) Result[\s\S]+<\/div>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/,/g, "")) / 16)) : 0
                    }
                };
                if (k.match(/id="result_[0-9]+_shotgunMainResults"/)) {
                    d.separator = /id="result_[0-9]+_shotgunMainResults"/g;
                    d.item.Title = function (o) {
                        var i = o.match(/class="productTitle"[\s\S]+?(<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"[\s\S]+?<\/a>)/);
                        if (i) {
                            return {
                                Title: f.trim(f.strip_tags(i[1])),
                                DetailPageURL: i[2],
                                ImageUrl: i[3]
                            }
                        }
                    }
                } else {
                    var l = k.match(/id="ajaxData"/);
                    if (l) {
                        k = k.substr(0, l.index)
                    }
                    d.separator = /id="result_[0-9]+"/g;
                    if (k.match(/<div class="productImage"/)) {
                        f.extend(d.item, {
                            ImageUrl: /class="productImage"[\s\S]+?<img[^>]+src="([^"]+?)"/,
                            DetailPageURL: /class="productTitle"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="productTitle"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    } else {
                        f.extend(d.item, {
                            ImageUrl: /<img[^>]+src="([^"]+?)" class="productImage"/,
                            DetailPageURL: /class="title"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="title"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    }
                }
            } else {
                d = {
                    total_pages: function (o) {
                        var i = o.match(/class="resultCount"[\s\S]+?([\d,]+) Result[\s\S]+<\/td>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/,/g, "")) / 16)) : 0
                    },
                    separator: /<td[^>]+class="searchitem\b/g,
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="saleprice">([\s\S]+?)<\/span>/,
                        UsedPrice: /class="listprice">([\s\S]+?)<\/span/,
                        FastTrack: /<td class="fastTrackList"[^>]*>([\s\S]+?)<\/td>/,
                        Stars: function (o) {
                            var i = o.match(/class="ratingWithoutPrimeImage">[\s\S]+?(<a[\s\S]+?<\/a>)[\s\S]+?(\(<a[\s\S]+?<\/a>\))/);
                            return i ? i[1] + i[2] : ""
                        },
                        ImageUrl: /class="imageColumn"[\s\S]+?<img[^>]+src="([^"]+)"/,
                        DetailPageURL: /class="dataColumn"[\s\S]+?<a[^>]+href="([^"]+)"/,
                        Title: /class="srTitle">([\s\S]+?)<\/span/
                    }
                }
            }
            var h = f.SearchEngine.parse(k, d);
            for (var j = h.Items.length; j--; ) {
                var m = h.Items[j];
                m.FastTrack = f.trim(f.strip_tags(m.FastTrack || ""));
                m.SmallImageUrl = m.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA75_.");
                m.LargeImageUrl = m.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA300_.");
                m.Stars = f.SearchEngine.add_css_prefix(m.Stars || "").replace(/href="([^"]+)"/g, function (o, i) {
                    return 'target="_blank" href="' + f.SearchEngine.click_url(i) + '"'
                });
                m.Price = f.trim(m.Price) + ' - <a href="http://www.ookong.com/us/p/' + m.ASIN + '?ref=assist" target="_blank" class="ookong-histioy_chart">see price history</a>';
                m.ClickUrl = f.SearchEngine.click_url(m.DetailPageURL);
                var n = f.parse_url(m.DetailPageURL);
                var e = {
                    SubscriptionId: "AKIAJDQORFYIN52C43IQ",
                    tag: "ruyi-20",
                    linkCode: "xm2",
                    camp: "2025",
                    creative: "165953",
                    creativeASIN: m.ASIN
                };
                m.DetailPageURL = n.scheme + "://" + n.host + n.path + encodeURIComponent("?" + f.http_build_query(e))
            }
            return h
        },
        title: {
            en: "Amazon"
        },
        homepage: "http://www.amazon.com",
        url: "http://www.amazon.com/s/ref=nb_sb_noss?field-keywords={K}&search-alias=aps&page={P}",
        host: "amazon\\.com"
    }, {
        name: "amazonuk",
        locales: "uk",
        encoding: "def",
        enabled: "1",
        order: "2",
        parse: function (l, h) {
            var g = h;
            var d;
            if (l.match(/id="resultCount"/)) {
                d = {
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="newPrice">[\s\S]+?<span(?: class="price")?>(.*?)<\/span>/,
                        UsedPrice: /class="newPrice">[\s\S]+?<strike>(.*?)<\/strike>/,
                        FastTrack: /<div class="fastTrack"[^>]*>([\s\S]+?)<\/div>/,
                        Stars: /class="stars">[\s\S]+?(<a[\s\S]+?<\/a>)/
                    },
                    total_pages: function (p) {
                        var i = p.match(/id="resultCount"[\s\S]+?([\d,]+) Result[\s\S]+<\/div>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/,/g, "")) / 16)) : 0
                    }
                };
                if (l.match(/id="result_[0-9]+_shotgunMainResults"/)) {
                    d.separator = /id="result_[0-9]+_shotgunMainResults"/g;
                    d.item.Title = function (p) {
                        var i = p.match(/class="productTitle"[\s\S]+?(<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"[\s\S]+?<\/a>)/);
                        if (i) {
                            return {
                                Title: g.trim(g.strip_tags(i[1])),
                                DetailPageURL: i[2],
                                ImageUrl: i[3]
                            }
                        }
                    }
                } else {
                    var m = l.match(/id="ajaxData"/);
                    if (m) {
                        l = l.substr(0, m.index)
                    }
                    d.separator = /id="result_[0-9]+"/g;
                    if (l.match(/<div class="productImage"/)) {
                        g.extend(d.item, {
                            ImageUrl: /class="productImage"[\s\S]+?<img[^>]+src="([^"]+?)"/,
                            DetailPageURL: /class="productTitle"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="productTitle"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    } else {
                        g.extend(d.item, {
                            ImageUrl: /<img[^>]+src="([^"]+?)" class="productImage"/,
                            DetailPageURL: /class="title"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="title"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    }
                }
            } else {
                d = {
                    total_pages: function (p) {
                        var i = p.match(/class="resultCount"[\s\S]+?([\d,]+) Result[\s\S]+<\/td>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/,/g, "")) / 16)) : 0
                    },
                    separator: /<td[^>]+class="searchitem\b/g,
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="saleprice">([\s\S]+?)<\/span>/,
                        UsedPrice: /class="listprice">([\s\S]+?)<\/span/,
                        FastTrack: /<td class="fastTrackList"[^>]*>([\s\S]+?)<\/td>/,
                        Stars: function (p) {
                            var i = p.match(/class="ratingWithoutPrimeImage">[\s\S]+?(<a[\s\S]+?<\/a>)[\s\S]+?(\(<a[\s\S]+?<\/a>\))/);
                            return i ? i[1] + i[2] : ""
                        },
                        ImageUrl: /class="imageColumn"[\s\S]+?<img[^>]+src="([^"]+)"/,
                        DetailPageURL: /class="dataColumn"[\s\S]+?<a[^>]+href="([^"]+)"/,
                        Title: /class="srTitle">([\s\S]+?)<\/span/
                    }
                }
            }
            var j = g.SearchEngine.parse(l, d);
            var f = function (p, i) {
                if (typeof i == "undefined") {
                    i = "ookong-"
                }
                return p.replace(/class="([^"]+)"/g, function (s, r) {
                    var r = r.split(/\s+/);
                    for (var q = 0; q < r.length; q++) {
                        r[q] = i + r[q]
                    }
                    return 'class="' + r.join(" ") + '"'
                })
            };
            for (var k = j.Items.length; k--; ) {
                var n = j.Items[k];
                n.FastTrack = g.trim(g.strip_tags(n.FastTrack || ""));
                n.SmallImageUrl = n.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA75_.");
                n.LargeImageUrl = n.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA300_.");
                n.Stars = g.SearchEngine.add_css_prefix(n.Stars || "").replace(/href="([^"]+)"/g, function (p, i) {
                    return 'target="_blank" href="' + g.SearchEngine.click_url(i) + '"'
                });
                n.Price = g.trim(n.Price) + ' - <a href="http://www.ookong.com/uk/p/' + n.ASIN + '?ref=assist" target="_blank" class="ookong-histioy_chart">see price history</a>';
                n.ClickUrl = g.SearchEngine.click_url(n.DetailPageURL);
                var o = g.parse_url(n.DetailPageURL);
                var e = {
                    SubscriptionId: "AKIAJDQORFYIN52C43IQ",
                    tag: "y--20",
                    linkCode: "xm2",
                    camp: "2025",
                    creative: "165953",
                    creativeASIN: n.ASIN
                };
                n.DetailPageURL = o.scheme + "://" + o.host + o.path + encodeURIComponent("?" + g.http_build_query(e))
            }
            return j
        },
        title: {
            en: "Amazon UK"
        },
        homepage: "http://www.amazon.co.uk",
        url: "http://www.amazon.co.uk/s/ref=nb_sb_noss?field-keywords={K}&search-alias=aps&page={P}&tag={tag}",
        host: "amazon\\.co\\.uk"
    }, {
        name: "amazonde",
        locales: "de",
        encoding: "def",
        enabled: "1",
        order: "3",
        parse: function (k, g) {
            var f = g;
            var d;
            if (k.match(/id="resultCount"/)) {
                d = {
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="newPrice">[\s\S]+?<span(?: class="price")?>(.*?)<\/span>/,
                        UsedPrice: /class="newPrice">[\s\S]+?<strike>(.*?)<\/strike>/,
                        FastTrack: /<div class="fastTrack"[^>]*>([\s\S]+?)<\/div>/,
                        Stars: /class="stars">[\s\S]+?(<a[\s\S]+?<\/a>)/
                    },
                    total_pages: function (o) {
                        var i = o.match(/id="resultCount"[\s\S]+?([\d\.]+) Ergebnisse[\s\S]+<\/div>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/\./g, "")) / 16)) : 0
                    }
                };
                if (k.match(/id="result_[0-9]+_shotgunMainResults"/)) {
                    d.separator = /id="result_[0-9]+_shotgunMainResults"/g;
                    d.item.Title = function (o) {
                        var i = o.match(/class="productTitle"[\s\S]+?(<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"[\s\S]+?<\/a>)/);
                        if (i) {
                            return {
                                Title: f.trim(f.strip_tags(i[1])),
                                DetailPageURL: i[2],
                                ImageUrl: i[3]
                            }
                        }
                    }
                } else {
                    var l = k.match(/id="ajaxData"/);
                    if (l) {
                        k = k.substr(0, l.index)
                    }
                    d.separator = /id="result_[0-9]+"/g;
                    if (k.match(/<div class="productImage"/)) {
                        f.extend(d.item, {
                            ImageUrl: /class="productImage"[\s\S]+?<img[^>]+src="([^"]+?)"/,
                            DetailPageURL: /class="productTitle"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="productTitle"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    } else {
                        f.extend(d.item, {
                            ImageUrl: /<img[^>]+src="([^"]+?)" class="productImage"/,
                            DetailPageURL: /class="title"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                            Title: /class="title"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/
                        })
                    }
                }
            } else {
                d = {
                    total_pages: function (o) {
                        var i = o.match(/class="resultCount"[\s\S]+?([\d\.]+) Ergebnisse[\s\S]+<\/td>/);
                        return i ? Math.min(4, Math.ceil((i[1].replace(/\./g, "")) / 16)) : 0
                    },
                    separator: /<td[^>]+class="searchitem\b/g,
                    item: {
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Price: /class="saleprice">([\s\S]+?)<\/span>/,
                        UsedPrice: /class="listprice">([\s\S]+?)<\/span/,
                        FastTrack: /<td class="fastTrackList"[^>]*>([\s\S]+?)<\/td>/,
                        Stars: function (o) {
                            var i = o.match(/class="ratingWithoutPrimeImage">[\s\S]+?(<a[\s\S]+?<\/a>)[\s\S]+?(\(<a[\s\S]+?<\/a>\))/);
                            return i ? i[1] + i[2] : ""
                        },
                        ImageUrl: /class="imageColumn"[\s\S]+?<img[^>]+src="([^"]+)"/,
                        DetailPageURL: /class="dataColumn"[\s\S]+?<a[^>]+href="([^"]+)"/,
                        Title: /class="srTitle">([\s\S]+?)<\/span/
                    }
                }
            }
            var h = f.SearchEngine.parse(k, d);
            for (var j = h.Items.length; j--; ) {
                var m = h.Items[j];
                m.FastTrack = f.trim(f.strip_tags(m.FastTrack || ""));
                m.SmallImageUrl = m.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA75_.");
                m.LargeImageUrl = m.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA300_.");
                m.Stars = f.SearchEngine.add_css_prefix(m.Stars || "").replace(/href="([^"]+)"/g, function (o, i) {
                    return 'target="_blank" href="' + f.SearchEngine.click_url(i) + '"'
                });
                m.Price = f.trim(m.Price) + ' - <a href="http://www.ookong.com/de/p/' + m.ASIN + '?ref=assist" target="_blank" class="ookong-histioy_chart">see price history</a>';
                m.ClickUrl = f.SearchEngine.click_url(m.DetailPageURL);
                var n = f.parse_url(m.DetailPageURL);
                var e = {
                    SubscriptionId: "AKIAJDQORFYIN52C43IQ",
                    tag: "d--20",
                    linkCode: "xm2",
                    camp: "2025",
                    creative: "165953",
                    creativeASIN: m.ASIN
                };
                m.DetailPageURL = n.scheme + "://" + n.host + n.path + encodeURIComponent("?" + f.http_build_query(e))
            }
            return h
        },
        title: {
            en: "Amazon DE"
        },
        homepage: "http://www.amazon.de",
        url: "http://www.amazon.de/s/ref=nb_sb_noss?field-keywords={K}&search-alias=aps&page={P}&tag={tag}",
        host: "amazon\\.de"
    }, {
        name: "amazoncn",
        locales: "zh",
        encoding: "def",
        enabled: "1",
        order: "4",
        parse: function (j, d) {
            var h = d;
            var k;
            if (j.match(/id="resultCount"/)) {
                k = {
                    item: {
                        valid: function (m) {
                            var i = m.match(/class="(.*?)"/);
                            return i && i[1].match(/\bproduct\b/)
                        },
                        ImageUrl: /class="(?:productImage|image)"[\s\S]+?<img[^>]+src="([^"]+?)"/,
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        DetailPageURL: /class="(?:productTitle|title)"[\s\S]+?<a[^>]+href="([^"]+?)"/,
                        Title: /class="(?:productTitle|title)"[\s\S]+?<a[^>]+>([\s\S]+?)<\/a>/,
                        Price: /class="newPrice">[\s\S]+?<span[^>]*>(.*?)<\/span>/,
                        UsedPrice: /class="newPrice">[\s\S]+?<strike>(.*?)<\/strike>/,
                        FastTrack: /<div class="fastTrack"[^>]*>([\s\S]+?)<\/div>/,
                        Stars: /class="stars">\s+(<div[\s\S]+?<\/div>)/
                    },
                    separator: /<div[^>]+id="result_[0-9]+"/g,
                    total_pages: function (m) {
                        var i = m.match(/id="resultCount"[\s\S]+?(?:\u5171([0-9,]+)\u6761|\u663e\u793a.* ([0-9,]+) \u4e2a\u7ed3\u679c)/);
                        if (i) {
                            return Math.min(4, Math.ceil((i[1] || i[2]).replace(/,/g, "") / 16))
                        }
                        return 0
                    }
                }
            } else {
                k = {
                    item: {
                        valid: function (m) {
                            var i = m.match(/class="(.*?)"/);
                            return i && i[1].match(/\bproduct\b/)
                        },
                        ImageUrl: /class="imageColumn"[\s\S]+?<img\s+[^>]*src="([^"]+?)"/,
                        ASIN: /name="([0-9A-Za-z]{10})(?:_[0-9]+)?"/,
                        Title: function (m) {
                            var i = m.match(/<a\s+[^>]*href="([^"]+?)"><span class="srTitle">(.*?)<\/span><\/a>/);
                            if (i) {
                                return {
                                    DetailPageURL: i[1],
                                    Title: i[2]
                                }
                            }
                        },
                        Price: /class="listprice">(.*?)<\/span>/,
                        UsedPrice: /class="saleprice">(.*?)<\/span>/,
                        FastTrack: /class="fastTrackList"[^>]*>([\s\S]+?)<\/td>/,
                        Stars: /class="ratingWithoutPrimeImageSpan">(<span[\s\S]+?<\/span>)/
                    },
                    separator: /<td[^>]+class="searchitem /g,
                    total_pages: function (m) {
                        var i = m.match(/class="resultCount"[\s\S]+?(?:\u5171([0-9,]+)\u6761|\u663e\u793a.* ([0-9,]+) \u4e2a\u7ed3\u679c)<\/td>/);
                        if (i) {
                            return Math.min(4, Math.ceil((i[1] || i[2]).replace(/,/g, "") / 16))
                        }
                        return 0
                    }
                }
            }
            var e = j.match(/id="ajaxData"/);
            if (e) {
                j = j.substr(0, e.index)
            }
            var g = h.SearchEngine.parse(j, k);
            for (var f = g.Items.length; f--; ) {
                var l = g.Items[f];
                l.FastTrack = h.trim(h.strip_tags(l.FastTrack || ""));
                l.SmallImageUrl = l.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA75_.");
                l.LargeImageUrl = l.ImageUrl.replace(/\.(_SL\d+)?_AA\d+_\./, "._AA300_.");
                l.ClickUrl = h.SearchEngine.click_url(l.DetailPageURL);
                l.Stars = (l.Stars || "").replace(/href="([^"]+)"/g, function (m, i) {
                    i = h.SearchEngine.click_url(i);
                    return 'target="_blank" href="' + i + '"'
                });
                l.DetailPageURL += (l.DetailPageURL.indexOf("?") != -1 ? "&" : "?") + "tag=zhushou-23"
            }
            return g
        },
        title: {
            zh: "\u4e9a\u9a6c\u900a",
            en: "Amazon Cn"
        },
        homepage: "http://www.amazon.cn",
        url: "http://www.amazon.cn/s/ref=nb_sb_noss?field-keywords={K}&search-alias=aps&page={P}&tag={tag}",
        host: "amazon\\.cn"
    }, {
        name: "walmart",
        locales: "us",
        encoding: "def",
        enabled: "1",
        order: "6",
        parse: function (h, d) {
            var g = d;
            var j = {
                total_pages: function (i) {
                    return i.match(/class="SPRecordCount"/) ? 1 : 0
                },
                separator: /<div [^>]*class="item\b/g,
                item: {
                    ASIN: function (l) {
                        var i = l.match(/<a class="prodLink\b[^>]+href="([^"]+)"[\s\S]+?([^>]+)\S*<\/a>/);
                        var m = {};
                        if (i) {
                            m.DetailPageURL = "http://www.walmart.com" + i[1];
                            m.Title = i[2];
                            m.ASIN = g.SearchEngine.get_match(m.DetailPageURL, /(?:product_id=|\/)(\w+)$/)
                        }
                        return m
                    },
                    SmallImageUrl: /<img[^>]+class="prodImg"[^>]+src="([^"]+)"/,
                    FastTrack: /(<span class="BodyS"[\s\S]+?<\/div>)/,
                    Price: /(<span class="prefixPriceText2[\s\S]+?<\/div>)/,
                    UsedPrice: /<div class="PriceSLtgry">Was (.*?)<\/div>/
                }
            };
            var f = g.SearchEngine.parse(h, j);
            for (var e = f.Items.length; e--; ) {
                var k = f.Items[e];
                k.Title = g.htmlspecialchars_decode(g.trim(k.Title));
                k.LargeImageUrl = (k.SmallImageUrl || "").replace("_180X180", "_300X300");
                k.FastTrack = g.trim(g.strip_tags(k.FastTrack || ""));
                k.Price = g.trim(g.strip_tags(k.Price || "")).replace(/\.\s+/, ".");
                k.Stars = g.strip_tags((k.Stars || ""), "a");
                k.ClickUrl = g.SearchEngine.click_url(k.DetailPageURL)
            }
            return f
        },
        title: {
            en: "Walmart"
        },
        homepage: "http://www.walmart.com",
        url: "http://www.walmart.com/search/search-ng.do?search_constraint=0&search_query={K}",
        host: "walmart\\.com"
    }, {
        name: "ebay",
        locales: "us,uk,de",
        encoding: "def",
        enabled: "1",
        order: "5",
        parse: function (j, e) {
            var h = e;
            var d = {
                catalog: {
                    SmallImageUrl: /<img src="([^"]+)"[^>]+?class="rslp-p"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<div class="rslp-t"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: /<td class="rslp-cd[\s\S]+?"pdbg">(.*?)<\//,
                    UsedPrice: /<td class="rslp-cd[\s\S]+?used<\/a> from: <b>(.*?)<\//,
                    FastTrack: /<div class="epdpl[^>]+><span>(.*?)<\/span>/,
                    Stars: /<div class="rbr"[\s\S]+?(<a[\s\S]+?<\/a>[\s\S]+?<\/span>)/
                },
                cgi: {
                    SmallImageUrl: /<img class="img" src="([^"]+)"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<td class="dtl"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: /<td class="prc[\s\S]+?>(.*?)<\//,
                    UsedPrice: function (m) {
                        var i = m.match(/<td class="prc[\s\S]+?<\/td>/);
                        if (i) {
                            return h.SearchEngine.get_match(i[0], /<div>(.*?)<\/div>/)
                        }
                    },
                    FastTrack: /<div class="epli[^>]+>(.*?)<\/div>/
                }
            };
            var k = {
                total_pages: function (m) {
                    var i = m.match(/<span class="page">[\s\S]+?(\d+)<\/i>/);
                    return i ? Math.min(2, i[1]) : 0
                },
                separator: /<table [^>]*class="li\b/g,
                item: {
                    ASIN: function (m) {
                        var i = m.match(/<table [^>]*class="li\b[^"]*" r=/) ? d.cgi : d.catalog;
                        return h.SearchEngine.parse_item(m, i) || {}
                    }
                }
            };
            var g = h.SearchEngine.parse(j, k);
            for (var f = g.Items.length; f--; ) {
                var l = g.Items[f];
                l.LargeImageUrl = l.SmallImageUrl.replace("_26.JPG", "_35.JPG");
                l.Stars = h.strip_tags(h.SearchEngine.add_css_prefix(l.Stars || ""), "a");
                l.Price = h.strip_tags(l.Price || "");
                if (l.DetailPageURL.indexOf("/") == 0) {
                    l.DetailPageURL = "http://www.ebay.com" + l.DetailPageURL
                }
                l.ClickUrl = h.SearchEngine.click_url(l.DetailPageURL)
            }
            return g
        },
        title: {
            en: "eBay"
        },
        homepage: "http://www.ebay.com",
        url: "http://shop.ebay.com/i.html?LH_BIN=1&_ipg=25&_dmd=1&_nkw={K}&_pgn={P}",
        host: "ebay\\.com"
    }, {
        name: "ebayuk",
        locales: "uk",
        encoding: "def",
        enabled: "1",
        order: "7",
        parse: function (j, e) {
            var h = e;
            var d = {
                catalog: {
                    SmallImageUrl: /<img src="([^"]+)"[^>]+?class="rslp-p"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<div class="rslp-t"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: function (i) {
                        return h.SearchEngine.get_match(i, /<td class="rslp-pc[\s\S]+?"mp">(.*?)<\//) || h.SearchEngine.get_match(i, /class="pdbg">(.*?)<\//)
                    },
                    UsedPrice: /<td class="rslp-pc[\s\S]+?"sti">(.*?)<\//,
                    FastTrack: /<div class="epdpl[^>]+><span>(.*?)<\/span>/,
                    Stars: /<div class="rbr"[\s\S]+?(<a[\s\S]+?<\/a>[\s\S]+?<\/span>)/
                },
                cgi: {
                    SmallImageUrl: /<img class="img" src="([^"]+)"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<td class="dtl"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: function (i) {
                        return h.SearchEngine.get_match(i, /<td class="prc[\s\S]+?>(.*?)<\//) || h.SearchEngine.get_match(i, /class="pdbg">(.*?)<\//)
                    },
                    UsedPrice: function (m) {
                        var i = m.match(/<td class="prc[\s\S]+?<\/td>/);
                        if (i) {
                            return h.SearchEngine.get_match(i[0], /<div>(.*?)<\/div>/)
                        }
                    },
                    FastTrack: /<div class="epli[^>]+>(.*?)<\/div>/
                }
            };
            var k = {
                total_pages: function (m) {
                    var i = m.match(/<span class="page">[\s\S]+?(\d+)<\/i>/);
                    return i ? Math.min(2, i[1]) : 0
                },
                separator: /<table [^>]*class="li\b/g,
                item: {
                    ASIN: function (m) {
                        var i = m.match(/<table [^>]*class="li\b[^"]*" r=/) ? d.cgi : d.catalog;
                        return h.SearchEngine.parse_item(m, i) || {}
                    }
                }
            };
            var g = h.SearchEngine.parse(j, k);
            for (var f = g.Items.length; f--; ) {
                var l = g.Items[f];
                l.Stars = h.strip_tags(h.SearchEngine.add_css_prefix(l.Stars || ""), "a");
                l.LargeImageUrl = l.SmallImageUrl.replace("_26.JPG", "_35.JPG");
                l.Price = h.strip_tags(l.Price || "");
                if (l.DetailPageURL.indexOf("/") == 0) {
                    l.DetailPageURL = "http://www.ebay.com" + l.DetailPageURL
                }
                l.ClickUrl = h.SearchEngine.click_url(l.DetailPageURL)
            }
            return g
        },
        title: {
            en: "eBay UK"
        },
        homepage: "http://www.ebay.co.uk",
        url: "http://shop.ebay.co.uk/i.html?LH_BIN=1&_ipg=25&_dmd=1&_nkw={K}&_pgn={P}",
        host: "ebay\\.co\\.uk"
    }, {
        name: "ebayde",
        locales: "de",
        encoding: "def",
        enabled: "1",
        order: "8",
        parse: function (j, e) {
            var h = e;
            var d = {
                catalog: {
                    SmallImageUrl: /<img src="([^"]+)"[^>]+?class="rslp-p"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<div class="rslp-t"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: function (i) {
                        return h.SearchEngine.get_match(i, /<td class="rslp-pc[\s\S]+?"mp">(.*?)<\//) || h.SearchEngine.get_match(i, /class="pdbg">(.*?)<\//)
                    },
                    UsedPrice: /<td class="rslp-pc[\s\S]+?"sti">(.*?)<\//,
                    FastTrack: /<div class="epdpl[^>]+><span>(.*?)<\/span>/,
                    Stars: /<div class="rbr"[\s\S]+?(<a[\s\S]+?<\/a>[\s\S]+?<\/span>)/
                },
                cgi: {
                    SmallImageUrl: /<img class="img" src="([^"]+)"/,
                    DetailPageURL: function (m) {
                        var i = m.match(/<td class="dtl"[\s\S]+?(<a href="([^"]+)"[\s\S]+?<\/a>)/);
                        var n = {};
                        if (i) {
                            n.DetailPageURL = i[2];
                            n.Title = h.trim(h.strip_tags(i[1]));
                            n.ASIN = h.SearchEngine.get_match(h.parse_url(n.DetailPageURL, "PHP_URL_PATH"), /(\d+)$/)
                        }
                        return n
                    },
                    Price: function (i) {
                        return h.SearchEngine.get_match(i, /<td class="prc[\s\S]+?>(.*?)<\//) || h.SearchEngine.get_match(i, /class="pdbg">(.*?)<\//)
                    },
                    UsedPrice: function (m) {
                        var i = m.match(/<td class="prc[\s\S]+?<\/td>/);
                        if (i) {
                            return h.SearchEngine.get_match(i[0], /<div>(.*?)<\/div>/)
                        }
                    },
                    FastTrack: /<div class="epli[^>]+>(.*?)<\/div>/
                }
            };
            var k = {
                total_pages: function (m) {
                    var i = m.match(/<span class="page">[\s\S]+?(\d+)<\/i>/);
                    return i ? Math.min(2, i[1]) : 0
                },
                separator: /<table [^>]*class="li\b/g,
                item: {
                    ASIN: function (m) {
                        var i = m.match(/<table [^>]*class="li\b[^"]*" r=/) ? d.cgi : d.catalog;
                        return h.SearchEngine.parse_item(m, i) || {}
                    }
                }
            };
            var g = h.SearchEngine.parse(j, k);
            for (var f = g.Items.length; f--; ) {
                var l = g.Items[f];
                l.Stars = h.strip_tags(h.SearchEngine.add_css_prefix(l.Stars || ""), "a");
                l.Price = h.strip_tags(l.Price || "");
                if (l.DetailPageURL.indexOf("/") == 0) {
                    l.DetailPageURL = "http://www.ebay.com" + l.DetailPageURL
                }
                l.ClickUrl = h.SearchEngine.click_url(l.DetailPageURL)
            }
            return g
        },
        title: {
            en: "eBay DE"
        },
        homepage: "http://www.ebay.de",
        url: "http://shop.ebay.de/i.html?LH_BIN=1&_ipg=25&_dmd=1&_nkw={K}&_pgn={P}",
        host: "ebay\\.de"
    }, {
        name: "jingdong",
        locales: "zh",
        encoding: "gb",
        enabled: "1",
        order: "8",
        parse: function (j, f) {
            var e = f;
            var l = j;
            var k = j.match(/<div[^>]+id="plist"/);
            if (k) {
                j = j.substr(k.index)
            }
            var d = {
                total_pages: function (n) {
                    var i = l.match(/<div class="pagin pagin-m[\s\S]+?<span[^>]+>\d+\/(\d+)/);
                    return i ? Math.min(5, i[1]) : 0
                },
                separator: /<div class="p-img/g,
                item: {
                    ASIN: function (n) {
                        var i = n.match(/class="p-img"[\s\S]+?<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"/);
                        if (i) {
                            var o = {
                                DetailPageURL: i[1],
                                SmallImageUrl: i[2]
                            };
                            o.ASIN = e.SearchEngine.get_match(o.DetailPageURL, /\/(\d+)\.htm/);
                            return o
                        }
                        return {}
                    },
                    Title: /class="p-name"[\s\S]+?<a[^>]+>(.*?)<\/a>/,
                    Price: function (n) {
                        var o = {};
                        var i = n.match(/class="p-price">([\s\S]+?)<\/div>/);
                        if (i) {
                            o.UsedPrice = e.SearchEngine.get_match(i[1], /<del>(.*?)<\/del>/);
                            o.Price = e.SearchEngine.get_match(i[1], /(<img[^>]+>)/)
                        }
                        return o
                    },
                    Stars: /class="extra"[^>]*>([\s\S]+?)<\/div>/
                }
            };
            var g = e.SearchEngine.parse(j, d);
            for (var h = g.Items.length; h--; ) {
                var m = g.Items[h];
                m.FastTrack = "";
                m.LargeImageUrl = (m.SmallImageUrl || "").replace("/n2/", "/n1/");
                m.Title = e.trim(e.strip_tags(m.Title || ""));
                m.Stars = e.trim(e.strip_tags(m.Stars || "", "span"));
                m.ClickUrl = e.SearchEngine.click_url(m.DetailPageURL)
            }
            return g
        },
        title: {
            zh: "\u4eac\u4e1c",
            en: "JingDong"
        },
        homepage: "http://www.360buy.com",
        url: "http://search.360buy.com/Search?keyword={K}&page={P}",
        host: "360buy\\.com"
    }, {
        name: "dangdang",
        locales: "zh",
        encoding: "gb",
        enabled: "1",
        order: "10",
        parse: function (g, d) {
            var f = d;
            var h = function (m, o) {
                var q = m;
                var n = {
                    total_pages: function (r) {
                        var i = q.match(/<div class="pagepanel([\s\S]+?)<\/div>/);
                        if (i) {
                            i = i[1].match(/<a[^>]+name="page"><span>(\d+)/);
                            return Math.min(5, i[1])
                        } else {
                            i = q.match(/<div[^>]*class="page_Simplified[\s\S]+?<span>.*?(\d+)<\/span>/);
                            return i ? i[1] : 0
                        }
                    }
                };
                var j = m.match(/<div[^>]+class="search_list/);
                if (j) {
                    m = m.substr(j.index)
                }
                if (m.match(/<div class="goods_pic pic/)) {
                    n.separator = /<div class="goods_pic pic/g;
                    n.item = {
                        ASIN: function (s) {
                            var i = s.match(/class="goods_pic pic[\s\S]+?<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"/);
                            var t = {};
                            if (i) {
                                t.DetailPageURL = i[1];
                                t.SmallImageUrl = i[2];
                                var u = f.parse_query(f.parse_url(t.DetailPageURL, "PHP_URL_QUERY"));
                                t.ASIN = u.product_id
                            }
                            return t
                        },
                        Title: /class="name">([\s\S]+?)<\/div>/
                    }
                } else {
                    if (m.match(/<div class="piclist/)) {
                        n.separator = /<div class="listitem/g;
                        n.item = {
                            ASIN: function (s) {
                                var i = s.match(/class="pic"[\s\S]+?<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"[^>]*alt="([^"]+)"/);
                                var t = {};
                                if (i) {
                                    t.DetailPageURL = i[1];
                                    t.SmallImageUrl = i[2];
                                    var u = f.parse_query(f.parse_url(t.DetailPageURL, "PHP_URL_QUERY"));
                                    t.ASIN = u.product_id;
                                    t.Title = i[3]
                                }
                                return t
                            },
                            Stars: /class="starlevel">([\s\S]+?)<\/p>/
                        }
                    } else {
                        n.separator = /<div class="listitem pic/g;
                        n.item = {
                            ASIN: function (s) {
                                var i = s.match(/class="listitem pic"[\s\S]+?<a[^>]+href="([^"]+)"[\s\S]+?<img[^>]+src="([^"]+)"/);
                                var t = {};
                                if (i) {
                                    t.DetailPageURL = i[1];
                                    t.SmallImageUrl = i[2];
                                    var u = f.parse_query(f.parse_url(t.DetailPageURL, "PHP_URL_QUERY"));
                                    t.ASIN = u.product_id
                                }
                                return t
                            },
                            Title: /class="maintitle">([\s\S]+?)<\/li>/,
                            Stars: /class="starlevel">([\s\S]+?)<\/li>/
                        }
                    }
                }
                n.item.Price = /class="price_d">([\s\S]+?)<\/span>/;
                n.item.UsedPrice = /class="price_m">([\s\S]+?)<\/span>/;
                var l = f.SearchEngine.parse(m, n);
                for (var k = l.Items.length; k--; ) {
                    var p = l.Items[k];
                    p.Stars = f.trim((p.Stars || "").replace(/class="\w+"/g, "").replace(/src='\//g, "src='http://search.dangdang.com/")).replace(/src="images/g, 'src="http://searchb.dangdang.com/images');
                    p.FastTrack = "";
                    p.LargeImageUrl = (p.SmallImageUrl || "").replace("_b.jpg", "_h.jpg");
                    p.Price = f.strip_tags(p.Price || "");
                    p.UsedPrice = f.strip_tags(p.UsedPrice || "");
                    p.Title = f.trim(f.strip_tags(p.Title || "").replace(/\s+/g, " "));
                    p.ClickUrl = f.SearchEngine.click_url(p.DetailPageURL)
                }
                f.SearchEngine.options.callbacks.success(l)
            };
            var e = g.match(/window.location.href='(http:\/\/[^']+)'/);
            if (e) {
                f.ajax({
                    url: e[1] + "&page=" + f.SearchEngine.options.ItemPage,
                    dataType: "text",
                    success: function (i) {
                        h(i, e[2])
                    },
                    error: f.SearchEngine.options.callbacks.error
                })
            } else {
                h(g)
            }
        },
        title: {
            zh: "\u5f53\u5f53",
            en: "DangDang"
        },
        homepage: "http://www.dangdang.com",
        url: "http://search.dangdang.com/search.php?key={K}&page={P}",
        host: "dangdang\\.com"
    }, {
        name: "neweggcn",
        locales: "zh",
        encoding: "gb",
        enabled: "1",
        order: "11",
        parse: function (j, f) {
            var e = f;
            var d;
            var m = e.SearchEngine.get_match;
            if (j.match(/id="proCtner"/)) {
                d = {
                    total_pages: function (i) {
                        return 1
                    },
                    separator: /id="proCtner"/g,
                    item: {
                        ASIN: function (n) {
                            var i = n.match(/<a id="bigImg" href="[^"]+?\/([-\w]+)(\.\w+)\?[^"]*"/);
                            var o = {};
                            if (i) {
                                o.ASIN = i[1];
                                o.SmallImageUrl = "http://c1.neweggimages.com.cn/neweggpic2/medium/" + o.ASIN.split("-").slice(0, 2).join("/") + "/" + o.ASIN + i[2];
                                o.DetailPageURL = "http://www.newegg.com.cn/Product/" + o.ASIN + ".htm"
                            }
                            return o
                        },
                        Title: /<h1>(.*?)<\/h1>/,
                        UsedPrice: /class="originalPrice[\s\S]+?<del>(.*?)<\/del>/,
                        Price: /class="neweggPrice[\s\S]+?(<img[^>]+>)/,
                        Stars: function (n) {
                            var i = m(n, /class=["']rank["'][\s\S]+?(<a[^>]+>.*?<\/a>)/);
                            if (i) {
                                i = i.replace(/class="rankB(\d+)"/g, function (o, p) {
                                    return 'class="rank' + Math.floor(parseInt(p) / 2) + '"'
                                })
                            }
                            return i
                        }
                    }
                }
            } else {
                var k;
                if ((k = j.indexOf('class="colSub"')) != 0) {
                    j = j.substr(0, k)
                }
                d = {
                    total_pages: function (n) {
                        var i = n.match(/class="pageNav"([\s\S]+?)<\/div/i);
                        if (i) {
                            return 1
                        }
                        return 0
                    },
                    separator: /<div class="itemCell/ig,
                    item: {
                        ASIN: function (n) {
                            var i = n.match(/class="info"[\s\S]+?<a href="([^"]+)"[^>]*>(.*)<\/a>/);
                            var o = {};
                            if (i) {
                                o.DetailPageURL = i[1];
                                o.Title = i[2];
                                o.ASIN = m(o.DetailPageURL, /\/([^\/]+)\.htm/)
                            }
                            return o
                        },
                        FastTrack: /class="extraIcon">(.*?)<\/p>/,
                        SmallImageUrl: /<p class="brand">[\s\S]*?<\/p>[\s\S]*?<a[\s\S]+?<img src="([^"]+)"[^>]*>/,
                        UsedPrice: /class="bypast"><span>(.*?)<\/span>/,
                        Price: /<strong class="price">(.*?)<\/strong>/,
                        Stars: /class=['"]rank\s*['"]>([\s\S]+?)<\/dd>/
                    }
                }
            }
            var g = e.SearchEngine.parse(j, d);
            for (var h = g.Items.length; h--; ) {
                var l = g.Items[h];
                l.FastTrack = e.strip_tags(l.FastTrack || "");
                if (l.Price.match(/<img/)) {
                    l.Price = l.Price.replace(/<img/, '\uffe5<img height="12"')
                } else {
                    l.Price = e.strip_tags(l.Price || "").replace(/\s+/g, "")
                }
                if (l.SmallImageUrl && l.SmallImageUrl.indexOf("neweggimages.com.cn") > 0) {
                    l.LargeImageUrl = l.SmallImageUrl.replace("/P144/", "/P380/")
                }
                l.Title = e.trim(e.strip_tags(l.Title || ""));
                l.Stars = e.SearchEngine.add_css_prefix(l.Stars + "");
                l.ClickUrl = e.SearchEngine.click_url(l.DetailPageURL);
                if (!l.Stars.match(/rankB\d/)) {
                    l.Stars = ""
                }
            }
            return g
        },
        title: {
            zh: "\u65b0\u86cb",
            en: "XinDan"
        },
        selected: false,
        homepage: "http://www.newegg.com.cn",
        url: "http://www.newegg.com.cn/Search.aspx?keyword={K}&page={P}&pageSize=48",
        host: "newegg\\.com\\.cn"
    }, {
        name: "taobao",
        locales: "zh",
        encoding: "def",
        enabled: "1",
        order: "9",
        title: {
            zh: "\u6dd8\u5b9d\u5546\u57ce",
            en: "Tmall"
        },
        homepage: "http://www.tmall.com",
        url: "http://ruyi.etao.com/ext/taobaoSearch?nick={nick}&keyword={K}&application={A}",
        host: "tmall\\.com"
    }, {
        name: "icson",
        locales: "zh",
        encoding: "gb",
        enabled: "1",
        order: "11",
        parse: function (h, d) {
            var g = d;
            var j = {
                total_pages: function (l) {
                    var i = l.match(/class="search_info"[\s\S]+?class="strong">(\d+)<\/strong>/);
                    if (i) {
                        return Math.min(Math.ceil(i[1] / 20), 5)
                    }
                    return 0
                },
                separator: /<li class="item_list"/ig,
                item: {
                    ASIN: function (l) {
                        var i = l.match(/class="link_name">[\s\S]*?<a[^>]* href="([^"]+?)"[^>]*>(.*?)<\/a>/);
                        if (i) {
                            var m = {};
                            m.DetailPageURL = i[1];
                            m.Title = i[2];
                            m.ASIN = g.SearchEngine.get_match(m.DetailPageURL, /(\d+)\.html/);
                            return m
                        }
                    },
                    SmallImageUrl: /class="link_pic"[\s\S]+?<img src="([^"]+)"/,
                    UsedPrice: /class="price_market"[\s\S]+?<del>(.*?)<\/del>/,
                    Price: /class="price_icson"[\s\S]+?<strong class="hot">(.*?)<\/strong>/,
                    FastTrack: /<p class="status">(.*?)<\/p>/,
                    Stars: /(<span class="icon_star".*?<\/span>)/
                }
            };
            var f = g.SearchEngine.parse(h, j);
            for (var e = f.Items.length; e--; ) {
                var k = f.Items[e];
                k.ClickUrl = g.SearchEngine.click_url(k.DetailPageURL);
                k.LargeImageUrl = (k.SmallImageUrl || "").replace("/middle/", "/mm/");
                k.Title = g.trim(g.strip_tags(k.Title));
                k.FastTrack = g.strip_tags(k.FastTrack);
                k.Stars = g.SearchEngine.add_css_prefix(k.Stars + "")
            }
            return f
        },
        title: {
            zh: "\u6613\u8fc5",
            en: "YiXun"
        },
        selected: false,
        homepage: "http://www.51buy.com",
        url: "http://ruyi.etao.com/ext/icsonProxy?q={K}&page={P}",
        host: "51buy\\.com"
    }, {
        name: "product_search",
        locales: "zh",
        encoding: "def",
        enabled: "0",
        order: "12",
        url: "http://ruyi.etao.com/ext/productSearch?q={K}&application={A}"
    }, {
        name: "ookong_book",
        locales: "zh",
        encoding: "def",
        enabled: "0",
        order: null,
        url: "http://ruyi.etao.com/ext/booksearch?isbn={K}&application={A}"
    }, {
        name: "coo8",
        locales: "zh",
        encoding: "gb",
        enabled: "1",
        order: "16",
        parse: function (h, d) {
            var g = d;
            var l = g.SearchEngine.get_match;
            var j = {
                total_pages: function (i) {
                    return l(i, /<div class="mPrompt"[^>]*>.*?共\S+?(\d+)/)
                },
                separator: /<p class="pic"/g,
                item: {
                    ASIN: function (m) {
                        var i = m.match(/<p class="pic">[\s\S]+?<a [^>]*href="[^"]+\/product\/(\d+)\.html"/);
                        if (i) {
                            return {
                                ASIN: i[1],
                                DetailPageURL: "http://www.coo8.com/product/" + i[1] + ".html"
                            }
                        }
                        return {}
                    },
                    Title: /<p class="pic"[\s\S]+?<img[^>]* alt="([^"]+)"/,
                    SmallImageUrl: /<p class="pic"[\s\S]+?<img src="([^"]+)"/,
                    Price: /<p class="price".*?<img src="([^"]+)"/
                }
            };
            var f = g.SearchEngine.parse(h, j);
            for (var e = f.Items.length; e--; ) {
                var k = f.Items[e];
                k.ClickUrl = g.SearchEngine.click_url(k.DetailPageURL);
                k.Stars = "";
                k.FastTrack = "";
                if (k.Price) {
                    k.Price = '<img src="' + k.Price + '" height="16" />'
                }
            }
            return f
        },
        title: {
            zh: "\u5e93\u5df4",
            en: "Coo8"
        },
        selected: false,
        homepage: "http://www.coo8.com",
        url: "http://www.coo8.com/front/search/showSearchResult.action?searchKeywords={K}&pageIndex={P}",
        host: "coo8\\.com"
    }, {
        name: "etao",
        locales: "zh",
        encoding: "def",
        enabled: "1",
        order: "7",
        title: {
            zh: "\u4e00\u6dd8",
            en: "Etao"
        },
        homepage: "http://www.etao.com",
        url: "http://ruyi.etao.com/ext/etaoSearch?q={K}&application={A}",
        host: "etao\\.com"
    }];
    a.SearchEngine = b
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (b, c) {
    var a = function (d) {
        return function (g, e, f) {
            d({
                Code: e,
                Message: f ? f.toString() : "Something is wrong(May be the networking is abnormal)."
            })
        }
    };
    b.service = {
        is_first_shown: function (f, e, d) {
            d(b.factory.getStorage("persist").get("first_shown") == "true")
        },
        set_first_shown: function (g, e, d) {
            var f = g.type === c ? true : g.type;
            b.factory.getStorage("persist").set("first_shown", f);
            d && d({})
        },
        get_site_config: function (g, f, e) {
            var d = {
                status: b.site.getStatus(g.domain, g.type),
                config: b.site.getConfig(g.domain)
            };
            e(d)
        },
        get_site_status: function (f, e, d) {
            d(b.site.getStatus(f.domain, f.type))
        },
        set_site_status: function (f, e, d) {
            b.site.setStatus(f.domain, f.status, f.type);
            d({})
        },
        get_search_engines: function (i, j, e) {
            var o = b.options.get_locale();
            var m = b.options.get_search_engine();
            var p = b.SearchEngine.search_engines;
            var n = {};
            for (var d in p) {
                var k = p[d];
                if (k.enabled) {
                    var f = k.locales.split(",");
                    var g = {
                        name: k.name,
                        title: typeof k.title[o] == "undefined" ? k.title.en : k.title[o],
                        homepage: k.homepage,
                        order: k.order,
                        host: k.host
                    };
                    if (typeof m[d] != "undefined") {
                        g.enabled = m[d]
                    } else {
                        if (k.locales.indexOf(o) != -1) {
                            g.enabled = k.selected
                        } else {
                            g.enabled = false
                        }
                    }
                    if (typeof n[f[0]] == "undefined") {
                        n[f[0]] = []
                    }
                    n[f[0]].push(g)
                }
            }
            for (var h in n) {
                n[h].sort(function (q, l) {
                    return q.order - l.order
                })
            }
            e({
                locale: o,
                search_engines: n
            })
        },
        is_book_site: function (j, l, f) {
            var m = b.constants.site_config.book;
            var h = j.domain;
            var d = j.url;
            var g = m[h] && m[h].patterns;
            var e;
            var k;
            if (g) {
                k = g.length;
                for (; k--; ) {
                    e = g[k];
                    if (d.match(new RegExp(e.url))) {
                        f(e.meta);
                        break
                    }
                }
            } else {
                f(false)
            }
        },
        item_search: function (f, e, d) {
            var g = f.SearchEngine;
            b.service.ga_push({
                tracktype: "_trackEvent",
                category: "Background",
                action: "Search[" + g + "]",
                label: f.Keyword
            }, null, function () { });
            if (typeof this[g + "_search"] == "function") {
                this[g + "_search"](f, e, d)
            } else {
                if (b.SearchEngine.has(g)) {
                    b.service.helper.search({
                        search_engine: g,
                        request: f,
                        callback: d
                    })
                } else {
                    d({
                        TotalPages: 0,
                        Items: []
                    })
                }
            }
        },
        is_detail_site: function (l, j, d) {
            var f = l.url;
            var e = this.helper.get_top_level_domain(f);
            var h = false;
            var k = b.constants.site_config.product[e];
            if (typeof k != "undefined") {
                if (typeof k.length != "undefined") {
                    for (var g = 0; g < k.length; g++) {
                        if (f.match(k[g])) {
                            h = true
                        }
                    }
                } else {
                    h = true
                }
            }
            if (!h) {
                d({});
                return
            }
            b.service.helper.search({
                search_engine: "product_search",
                request: {
                    Keyword: JSON.stringify({
                        url: l.url,
                        title: l.title
                    }),
                    ItemPage: 1
                },
                callback: function (i) {
                    if (typeof i.Items != "undefined") {
                        d({
                            locale: b.options.get_locale(),
                            product: i.Product
                        })
                    } else {
                        if (typeof i.Keyword != "undefined") {
                            d({
                                locale: b.options.get_locale(),
                                keyword: i.Keyword
                            })
                        }
                    }
                }
            })
        },
        ajax: function (f, e, d) {
            f.success = function (g) {
                d(g)
            };
            f.error = function () {
                d({})
            };
            b.ajax(f)
        },
        get_template: function (f, e, d) {
            b.service.helper.getTemplate(f.page, d)
        },
        tab_open: function (f, e, d) {
            b.browser.tabs.create({
                url: f.url,
                selected: (typeof f.selected == "undefined" ? true : f.selected)
            })
        },
        options_get: function (k, g, e) {
            var j = k.options;
            var h = {};
            for (var f = 0, d = j.length; f < d; f++) {
                h[j[f]] = b.options.get(j[f])
            }
            e(h)
        },
        options_set: function (h, g, d) {
            for (var f in h) {
                if (f == "locale") {
                    b.options.set_locale(h.locale);
                    b.options.set_search_engine({})
                } else {
                    if (f == "search_engine") {
                        var e = b.options.get_search_engine();
                        e[h.search_engine] = !!h.enabled;
                        b.options.set_search_engine(e)
                    } else {
                        if (f == "topic") { } else {
                            if (f == "search_result_setting") {
                                b.options.set_search_result_setting(h[f]);
                                b.site.default_status = h[f]
                            } else {
                                b.options.set(f, h[f])
                            }
                        }
                    }
                }
            }
            d({})
        },
        set_search_engine: function (i, g, d) {
            var f = b.options.get_search_engine();
            var h = i.search_engines;
            for (var e in h) {
                if (h.hasOwnProperty(e)) {
                    f[e] = h[e]
                }
            }
            b.options.set_search_engine(f);
            d({})
        },
        decode_gbk: function (f, e, d) {
            if (f.data.indexOf("%") == -1) {
                d(f.data)
            } else {
                d(b.encode.gb2312.decode(f.data))
            }
        },
        log_message: function (f, e, d) {
            b.console.debug("[page] " + f.message)
        },
        send_log: function (g, f, d) {
            var e = b.constants;
            var h = {
                a: g.action,
                p: e.pid,
                u: e.uid,
                v: e.version,
                t: Math.floor((new Date()).getTime() / 1000)
            };
            if (g.label) {
                h.l = g.label
            }
            b.ajax({
                url: b.options.get_api_url() + "/s.gif",
                data: h
            })
        }
    };
    b.service.helper = {
        requestHandler: function (h, g, d) {
            var f = h.topic;
            b.console.debug("request for " + f);
            try {
                if (f.charAt(0) != "_" && typeof b.service[h.topic] == "function") {
                    b.service[h.topic](h, g, d)
                } else {
                    b.console.debug("unknown request " + f)
                }
            } catch (i) {
                b.console.error("REQEUST ERROR:" + i.message + (i.stack ? "\n" + i.stack : ""))
            }
        },
        getTemplate: function (i, j) {
            var f = b.browser.extension.getURL(i);
            var h = f.indexOf("http://") == 0;
            var e = b.factory.getCache();
            var g = "template/" + i;
            var d = function (k) {
                var k = k.replace(/%chrome-extension%/g, b.browser.extension.getURL(""));
                if (h) {
                    e.set(g, k)
                }
                j(k)
            };
            if (h && e.has(g)) {
                j(e.get(g))
            } else {
                b.ajax({
                    url: f,
                    dataType: "text",
                    success: function (k) {
                        d(k)
                    },
                    error: function (m, k, l) {
                        if (m.readyState == 4 && f.indexOf("http://") != 0) {
                            d(m.responseText)
                        } else {
                            j({
                                Code: k,
                                Message: l ? l.toString() : "Something is wrong(May be the networking is abnormal)."
                            })
                        }
                    }
                })
            }
        },
        search: function (f) {
            var e = b.factory.getCache();
            var h = f.request;
            var d = b.filter_int(h.ItemPage, 1, 1);
            var g = f.search_engine + "/" + h.Keyword + "-" + d;
            if (e.has(g)) {
                f.callback(e.get(g))
            } else {
                b.SearchEngine.search(f.search_engine, h, {
                    success: function (i) {
                        e.set(g, i);
                        f.callback(i)
                    },
                    error: a(f.callback)
                })
            }
        },
        get_top_level_domain: function (e) {
            var f = b.parse_url(e, "PHP_URL_HOST");
            var d = f.match(/\.(com|co|org|net)\.(cn|uk|jp|hk|us|ca)$/) ? 3 : 2;
            var g = f.split(".");
            return g.slice(Math.max(g.length - d, 0)).join(".")
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!exports) {
    var exports = {}
} (function (a, b) {
    a.upgrader = {
        parse_version_string: function (c) {
            if (typeof (c) != "string") {
                c = String(c)
            }
            c = c.replace(/[-_+]/g, ".");
            var d = c.split(".");
            return {
                major: parseInt(d[0]) || 0,
                minor: parseInt(d[1]) || 0,
                revision: parseInt(d[2]) || 0
            }
        },
        version_compare: function (f, e) {
            if (f && typeof f == "object" && ("major" in f)) { } else {
                f = this.parse_version_string(f)
            }
            if (e && typeof e == "object" && ("major" in e)) { } else {
                e = this.parse_version_string(e)
            }
            var c = ["major", "minor", "revision"];
            for (var d = 0; d < 3; d++) {
                if (f[c[d]] < e[c[d]]) {
                    return -1
                } else {
                    if (f[c[d]] > e[c[d]]) {
                        return 1
                    }
                }
            }
            return 0
        },
        run: function (g, e, h) {
            var i = h.upgrade || {};
            var f = a.console || {
                debug: function () { }
            };
            g = this.parse_version_string(g);
            e = this.parse_version_string(e);
            if (this.version_compare(g, 0) == 0) {
                if (typeof h.install == "function") {
                    h.install(g, e)
                } else {
                    if (typeof i["0"] == "function") {
                        i["0"](g, e)
                    }
                }
            } else {
                for (var c in i) {
                    var d = this.parse_version_string(c);
                    if (this.version_compare(d, g) == 1 && this.version_compare(d, e) <= 0) {
                        i[c](g, e)
                    }
                }
            }
            if (this.version_compare(g, e) != 0 && h.after) {
                h.after(g, e)
            }
        }
    }
})(exports);
var EXPORTED_SYMBOLS = ["exports"];
if (!com) {
    var com = {}
}
if (!com.etao) {
    com.etao = {}
}
if (!com.etao.ruyitao) {
    com.etao.ruyitao = {}
} (function (b, d, c) {
    var a = exports;
    d.init = function () {
        a.console.setLevel("ERROR");
        a.extend(a.constants, {
            pid: "rc001",
            version: "3.1.4.2",
            application: "ruyi"
        });
        a.browser = chrome;
        chrome.extension.onRequest.addListener(a.service.helper.requestHandler);
        var h = function () {
            if (a.constants.application == "ruyisogou") {
                return "zh"
            }
            var o = "us";
            var p = window.navigator.language || window.navigator.userLanguage;
            p = p.toLowerCase();
            if (p.match(/^zh/)) {
                o = "zh"
            } else {
                if (p.match(/^en-gb/i)) {
                    o = "uk"
                } else {
                    if (p.match(/^de/)) {
                        o = "de"
                    } else {
                        if (p.match(/^it/)) {
                            o = "it"
                        } else {
                            if (p.match(/^fr/)) {
                                o = "fr"
                            }
                        }
                    }
                }
            }
            return o
        };
        if (a.browser.name == "safari") {
            (function () {
                var o = safari.extension.settings;
                var p = {
                    get: function (q) {
                        return o[q]
                    },
                    set: function (q, r) {
                        o[q] = r
                    },
                    get_object: function (q) {
                        try {
                            return JSON.parse(o[q])
                        } catch (r) {
                            return null
                        }
                    },
                    set_object: function (q, r) {
                        o[q] = JSON.stringify(r)
                    }
                };
                a.options.init({
                    storage: p,
                    locale: h()
                })
            })()
        } else {
            a.options.init({
                storage: a.factory.getStorage("options"),
                locale: h()
            })
        }
        a.site.init({
            storage: a.factory.getStorage("persist"),
            cache: a.factory.getCache(),
            status: a.options.get_search_result_setting()
        });
        var j = a.factory.getStorage("extension");
        if (!j.get("uid")) {
            j.set("uid", a.get_random_string())
        }
        a.constants.uid = j.get("uid");
        a.upgrader.run(j.get("version"), a.constants.version, {
            after: function (q, p) {
                var t = a.constants.application;
                j.set("version", a.constants.version);
                var u = a.constants.open_after_install_page;
                if (u == "never") {
                    return
                }
                q.revision = 0;
                p.revision = 0;
                var o = (a.upgrader.version_compare(q, 0) == 0);
                var s = !o && (a.upgrader.version_compare(p, q) > 0);
                var r;
                if (a.options.get_locale() != "zh") {
                    if (o && (u == "installing" || u == "always")) {
                        r = a.constants.after_install_page + "?utm_medium=ext&utm_source=install"
                    }
                } else {
                    if (o && (u == "installing" || u == "always")) {
                        r = "http://ruyi.etao.com/demo?testkeyword=%E7%9B%B8%E6%9C%BA"
                    } else {
                        if (s && (u == "upgrading" || u == "always")) {
                            r = a.constants.after_install_page_zh + "?utm_medium=ext&utm_source=update"
                        }
                    }
                }
                if (r) {
                    setTimeout(function () {
                        a.browser.tabs.create({
                            url: r,
                            selected: true
                        })
                    }, 700)
                }
            },
            install: function () {
                a.service.send_log({
                    action: "install"
                })
            },
            upgrade: {
                "1.8": function () {
                    if (a.browser.name == "safari") {
                        var p = a.factory.getStorage("options");
                        var o = safari.extension.settings;
                        p.each(function (q) {
                            o[q] = p.get(q);
                            p.remove(q)
                        })
                    }
                },
                "2.4.0": function () {
                    a.factory.getCache().storage.clear();
                    var r = a.options.storage.get_object("search_engine") || {};
                    if (a.options.get_locale() == "en") {
                        var o = h();
                        if (o != "zh") {
                            a.options.set_locale(o)
                        }
                        if (typeof r.en != "undefined" && typeof r.en["disabled"] != "undefined") {
                            r = r.en.disabled
                        }
                    } else {
                        if (typeof r.zh != "undefined" && typeof r.zh["disabled"] != "undefined") {
                            r = r.zh.disabled
                        }
                    }
                    var q = {};
                    for (var p in r) {
                        if (!r[p]) {
                            q[p] = true
                        }
                    }
                    a.options.storage.set_object("search_engine", r)
                },
                "3.0.6": function () {
                    if (a.options.get_locale() == "zh") {
                        var o = a.options.get_search_engine();
                        o.etao = true;
                        a.options.set_search_engine(o)
                    }
                },
                "3.0.7": function () {
                    a.factory.getCache().clear()
                },
                "3.0.8": function () {
                    a.options.set_search_engine({});
                    a.site.clearStatus();
                    a.service.set_first_shown({
                        type: false
                    })
                }
            }
        });
        a.SearchEngine.init();
        setTimeout(function () {
            a.service.send_log({
                action: "up"
            });
            a.site.getConfig("")
        }, 60 * 1000);
        var e = b.navigator;
        var i = /lin|unix|x11/i.test(e.platform);
        var k = /^Mac/.test(e.platform);
        var f = /Chrome/.test(e.userAgent);
        var g = /Firefox/.test(e.userAgent);
        if (k || (f && i) || a.constants.ga_disabled) {
            a.console.debug("GA disabled");
            a.service.ga_push = function () { }
        } else {
            a.console.debug("GA init");
            b._gaq = b._gaq || [];
            b._gaq.push(["_setAccount", a.constants.ga_account]);
            b._gaq.push(["_trackPageview"]);
            var m = document.createElement("script");
            m.type = "text/javascript";
            m.async = true;
            m.src = "https://ssl.google-analytics.com/ga.js";
            var n = document.getElementsByTagName("script")[0];
            n.parentNode.insertBefore(m, n);
            a.service.ga_push = function (q, p, o) {
                if (b._gaq) {
                    a.extend(q, {
                        trackytpe: "_trackEvent",
                        category: "Unknown",
                        action: "Unknown"
                    }, false);
                    a.console.debug("GA:Push " + JSON.stringify(q));
                    b._gaq.push([q.trackytpe, q.category, String(q.action), (typeof q.label == "undefined" ? c : String(q.label)), q.value])
                }
            }
        }
        var l = {
            DEFAULT_REPEAT_INTERVAL: 1800 * 1000,
            baseUrl: "http://ruyi.etao.com",
            uid: a.factory.getStorage("extension").get("uid"),
            delayed: 10 * 1000,
            timer: c,
            isAccepted: a.options.get_accept_term(),
            init: function () {
                var o = this;
                this.repeatInterval = this.getRepeatInterval();
                this.update(function () {
                    o.run()
                })
            },
            setAccepted: function (o) {
                this.isAccepted = o;
                if (this.timer) {
                    clearTimeout(this.timer)
                }
                this.init()
            },
            getRepeatInterval: function () {
                return this.DEFAULT_REPEAT_INTERVAL / (this.isAccepted ? 300 : 1)
            },
            update: function (p) {
                var o = this;
                a.ajax({
                    url: this.baseUrl + "/job/update" + (o.isAccepted ? "?a=1" : ""),
                    dataType: "text",
                    success: function (r) {
                        var q = new Function("S", r);
                        o.worker = q(exports);
                        p()
                    }
                })
            },
            run: function () {
                var o = this;
                try {
                    a.ajax({
                        url: this.baseUrl + "/job/get",
                        data: {
                            uid: this.uid,
                            worker: this.worker.name
                        },
                        dataType: "json",
                        success: function (q) {
                            if (typeof q.id == "undefined") {
                                if (o.repeatInterval < 3600000) {
                                    o.repeatInterval *= 2
                                }
                            } else {
                                o.worker.run(q.args, function (r) {
                                    if (typeof r != "undefined") {
                                        o.submit(q.id, r);
                                        o.repeatInterval = o.getRepeatInterval()
                                    }
                                    o.timer = setTimeout(function () {
                                        o.run()
                                    }, o.repeatInterval)
                                })
                            }
                        }
                    })
                } catch (p) {
                    o.timer = setTimeout(function () {
                        o.run()
                    }, o.repeatInterval)
                }
            },
            submit: function (p, o) {
                a.ajax({
                    url: this.baseUrl + "/job/submit",
                    type: "POST",
                    data: {
                        jobid: p,
                        uid: this.uid,
                        data: JSON.stringify(o)
                    }
                })
            }
        };
        if (a.options.get_locale() == "zh") {
            setTimeout(function () {
                l.init()
            }, l.delayed)
        }
        a.JobClient = l
    }
})(window, com.etao.ruyitao);